# İşlem akışı düğümleri

> İşlem akışı düzenleyicisindeki her düğümün işlevi, ayarları, çıkışları ve kullanıldığı akış türü; ayrıca bir işlem akışının sınırları.

Kaynak: https://proxus.io/tr/docs/reference/pipeline-nodes

Bu sayfada işlem akışı düzenleyicisinin **Tuval** sekmesindeki tüm düğümler listelenir. Her düğümün iki adı vardır:
paletteki ad ve ayar panelinin üst kısmında görünen ad. Başlıklarda paletteki ad kullanılır. Türkçe arayüzde bu iki
ad çoğu düğümde aynıdır; panel adı yalnızca farklı olduğunda "Panel adı" diye ayrıca belirtilir. **Kur** sekmesi de
aynı düğümleri sade adımlarla oluşturur. İşlem akışının nasıl kurulup yayınlandığı
[İşlem akışları](https://proxus.io/tr/docs/automate/pipelines) sayfasında anlatılır.

## İki tür işlem akışı

| Çalışma türü | Ne zaman çalışır | Neyle başlar | Hangi düğümleri kullanır |
| --- | --- | --- | --- |
| **Aktarım işlem akışı** | Her okumada, okuma kaydedilmeden ya da bir yere gönderilmeden önce. Veriyi değiştirebilir, atabilir ya da ayırabilir. | Tam olarak bir **Gelen veri** düğümüyle | Aşağıda **T** ile işaretli düğümler |
| **Otomasyon** | Okuma kaydedildikten sonra. Kaydedilen veri değişmez; işlem akışı alarm açar, mesaj gönderir, cihaza yazar ya da API çağırır. | 1 ile 8 arası kaynak düğümüyle | Aşağıda **A** ile işaretli düğümler |

## Çıkışlar ve hatalar

Çoğu düğümün bir **çıkış** ve bir **hata** çıkışı vardır. Yönlendirme düğümlerinin kendine özgü çıkışları vardır;
bunlar her düğümün açıklamasında belirtilir. Bir düğüm hata verdiğinde **hata** çıkışına hiçbir şey bağlı değilse
sonuç işlem akışının türüne göre değişir:

- Otomasyon işlem akışında o olayın işlenmesi durur ve hata sayılır.
- Aktarım işlem akışında ne olacağını işlem akışının **Hata durumunda** ayarı belirler: **Orijinali geçir**
  (varsayılan; okuma değişmeden yoluna devam eder), **At** ya da **Karantinaya al**.

Çıkışı olmayan düğümler ("dalı bitirir" diye belirtilenler) bir dalın son adımıdır.

## Alan adları

Bir alanı gösteren ayarlara alanın yolu yazılır: veri noktası değeri için `payload.<tag>`, ayrıca `metadata.<name>`,
`attributes.<name>`, `topic`, `origin`, `device.*`, `gateway.*` ya da `hierarchy.*`. Veri noktası adı bir harfle ya da
`_` ile başlar ve en çok 80 karakter olabilir. Cihaz ve Edge Gateway kimlikleri (`device.id`, `gateway.id`,
`metadata.DeviceId`, `metadata.GatewayId`) değiştirilemez ve silinemez.

Bir düğümün hangi okumaları işleyeceği, kaynak düğümlerde **Hangi veriler**, **Filtre** ve **Koşullu yönlendir**
düğümlerinde ise **Koşullar** altında seçilir. Seçim cihaza, Edge Gateway'e, cihaz profiline, protokole, konuma (kuruluş,
tesis, alan, hat ya da hücre, ekipman), veri noktasına, konuya, veri noktasının değerine, türüne, birimine ya da veri
kalitesine göre yapılabilir. Kaynaktaki **Gerekli veri noktaları** (gelişmiş) ayarı, işlem akışını yalnızca bu veri
noktalarına sahip cihazlarla sınırlar.

## Kaynaklar

### Gelen veri

**T**. Eşleşen bir cihazdan gelen her okumada, okuma kaydedilmeden ya da bir yere gönderilmeden önce işlem akışını başlatır.
Bir işlem akışında bu düğümden yalnızca bir tane bulunabilir.

| Ayar | Değerler |
| --- | --- |
| **Çalışma zamanı** | **Her değerde** (varsayılan) ya da **Yalnızca değer değiştiğinde**. |

### Cihaz değerleri

**A**. Cihazlar yeni veri noktası değerleri gönderdiğinde işlem akışını başlatır. **Çalışma zamanı**: **Her değerde**
ya da **Yalnızca değer değiştiğinde**.

### Cihaz durumu

**A**. Bir cihaz bağlandığında, bağlantısı koptuğunda ya da durumu değiştiğinde işlem akışını başlatır. **Hangi
veriler** dışında ayarı yoktur.

### Edge Gateway durumu

**A**. Bir Edge Gateway bağlandığında ya da bağlantısı koptuğunda işlem akışını başlatır.

### Sistem günlüğü

**A**. Platformun günlük kayıtları (uyarılar, hatalar) geldiğinde işlem akışını başlatır.

### Çalışma ölçümleri

**A**. Edge Gateway'in performans ölçümleri geldiğinde işlem akışını başlatır.

### Zamanlama

**A**. İşlem akışını belirlenen zamanlarda başlatır.

| Ayar | Değerler |
| --- | --- |
| **Zamanlama** | Beş alandan oluşur: dakika, saat, ayın günü, ay, haftanın günü (0 ile 7 arası; 0 ve 7 pazar günüdür). `*`, liste (`1,15`), aralık (`8-17`) ve adım (`*/5`) yazılabilir. Varsayılan `*/5 * * * *`. |
| **Saat dilimi** | Varsayılan UTC. |

Zamanlama dakikada bir denetlenir. Edge Gateway kapalıyken kaçırılan çalışmalar sonradan telafi edilmez.

### Veri yok

**A**. Bir cihazın değer göndermeyi bıraktığını ve yeniden göndermeye başladığını algılar.

| Ayar | Değerler |
| --- | --- |
| **Sessizlik eşiği (dakika)** | 1 ile 10.080 arası. Varsayılan 5. |

Çıkışları: **eksik** ve **geri geldi**. Her biri durum değiştiğinde bir kez tetiklenir. Denetim dakikada bir
yapıldığı için düğüm, eşik aşıldıktan sonra bir dakikaya kadar gecikmeyle tetiklenebilir.

## Veriyi düzenle

### Filtre

**T A**. Yalnızca **Koşullar** ile eşleşen veriyi geçirir; kalan veri **yanlış** çıkışına gider. Koşul yoksa tüm veri
geçer. Çıkışları: **doğru** ve **yanlış**.

### Alanları tut

**T A**. Yalnızca listelenen veri noktalarını tutar, diğerlerini kaldırır. Ayarı: **Tutulacak alanlar**.

### Alan ata

**T A**. Bir alana değer yazar.

| Ayar | Değerler |
| --- | --- |
| **Hedef alan** | Değerin yazılacağı alan. |
| **Değerin kaynağı** | **Alandan kopyala** (bu durumda **Kaynak alan** seçilir) ya da **Sabit değer** (bu durumda **Sabit değer** girilir: metin, sayı ya da true/false). |

Kaynak alan yoksa düğüm hata verir.

### Alanı yeniden adlandır

**T A**. Ayarları: **Eski ad** ve **Yeni ad**. Alan yoksa düğüm hata verir.

### Alanı kaldır

**T A**. Ayarı: **Alan**.

### Tür dönüştür

**T A**. Ayarları: **Alan** ve **Hedef tür**. Hedef tür Sayı (varsayılan), Tam sayı, Mantıksal, Metin, Tarih ve
saat ya da Herhangi olabilir. Dönüştürülemeyen değer **hata** çıkışına gider.

## Hesapla

### Hesapla

**T A**. Başka alanlardan yeni bir değer hesaplar.

| Ayar | Değerler |
| --- | --- |
| **Formül** | Sayılar, veri noktası adları, `+ - * /`, parantezler ve `abs(x)`, `round(x)`, `min(a, b)`, `max(a, b)`, `clamp(value, low, high)` fonksiyonları kullanılabilir. Örnek: `flow * 60` ya da `round(power / 1000)`. En çok 1.024 karakter. |
| **Sonuç alanı** | Yeni bir alan. Bu adda bir alan önceden bulunmamalıdır. |

Veri noktası adları `payload.` öneki olmadan yazılır. Bu veri noktaları ya kaynakta gerekli olarak tanımlanmış ya da
önceki bir düğümde üretilmiş olmalıdır. Sıfıra bölme, eksik değer ya da sonlu sayı olmayan bir sonuç **hata**
çıkışına gider. Sonuç, veri kalitesi Geçerli olan bir sayıdır.

### İfade

**T A**. **Hesapla** ile aynı düğümdür ve aynı ayarlara sahiptir.

### Birim ata

**T A**. Ayarları: **Alan** ve **Birim**. Birim, birim kataloğundan seçilir; aramak için adın bir kısmını yazın,
örneğin `Celsius` ya da `pressure`.

### Veri kalitesi ata

**T A**. Ayarları: **Alan** ve **Veri kalitesi** (Geçerli, Geçersiz ya da Belirsiz). Sonraki hesaplama düğümleri
Geçerli olmayan değerleri işlemez.

### Bağlam ekle

**T A**. Cihazla ilgili bilgileri özellik olarak ekler (`attributes.site`, ...). **Eklenecek bağlam** ayarında şunlar
seçilebilir: kuruluş, tesis, alan, hat, ekipman, cihaz adı, profil, protokol. Cihazda boş olan bilgiler eklenmez.

## Pencere ve durum

Bu düğümler önceki değerleri her cihaz için ayrı ayrı saklar.

### Hareketli ortalama

**T A**. Son okumaların ortalamasını hesaplar. Ayarları: **Giriş alanı**, **Sonuç alanı** ve **Penceredeki okuma
sayısı** (1 ile 1.024 arası, varsayılan 8).

### Değişim hızı

**T A**. Önceki okumadan bu yana saniye başına değişimi hesaplar. Ayarları: **Giriş alanı** ve **Sonuç alanı**.
İlk okuma yalnızca hesabı başlatır ve **hata** çıkışına gider.

### Zaman penceresi

Panel adı **Zaman penceresi ortalaması**. **A**. Belirli bir süre içindeki değerlerin ortalamasını hesaplar.
Ayarları: **Giriş alanı**, **Sonuç alanı**, **Süre (ms)** (varsayılan 60.000) ve **En fazla okuma sayısı** (1 ile
1.024 arası, varsayılan 128). Pencereden daha eski bir okuma **hata** çıkışına gider.

### Birleştir

**A**. İki cihazın son değerlerini yan yana getirir. Örneğin aynı hattaki giriş ve çıkış basıncını karşılaştırmak için
kullanılır.

| Ayar | Değerler |
| --- | --- |
| **Değerleri eşleştirme kapsamı** | Aynı cihaz, ekipman, hat / hücre, alan ya da tesis. |
| **Birinci değer**, **Birinci değerin kaydedileceği alan** | Birinci veri noktası ve değerin yazılacağı alan. |
| **İkinci değer**, **İkinci değerin kaydedileceği alan** | İkinci veri noktası ve değerin yazılacağı alan. |
| **Aradaki en büyük zaman farkı (ms)** | Varsayılan 1.000. |
| **Roller (gelişmiş)** | **Birinci rol**, **İkinci rol**: hangi cihazın hangi rolü üstlendiği. |

Girişleri: **sol** ve **sağ**. İki değer de gelene ve aradaki zaman farkı yeterince küçülene kadar okumalar
**hata** çıkışına gider.

### Tekrar bastırma

**A**. Her **Sessiz bekleme süresi (ms)** boyunca (varsayılan 1.000) cihaz başına en çok bir okumayı geçirir. Diğer
okumalar **hata** çıkışına gider.

### Histerezis

Panel adı **Bant**. **A**. Bir değeri ölü bant kullanarak açık ya da kapalı duruma çevirir. Böylece durum tek bir
eşiğin çevresinde sürekli gidip gelmez. Ayarları: **Giriş alanı**, **Bu değer veya üstünde aç** (varsayılan 60) ve **Bu değer
veya altında kapat** (varsayılan 40). Çıkışları: **açık** ve **kapalı**.

### Anomali algıla

Panel adı **Olağan dışı değerleri algıla**. **A**. Her değeri, son değerlerin ortalaması ve yayılımıyla karşılaştırır.

| Ayar | Değerler |
| --- | --- |
| **Değer** | Veri noktası. |
| **Öğrenilecek son değer sayısı** | 10 ile 1.024 arası. Varsayılan 120. |
| **Duyarlılık** | Standart sapma cinsinden, 1 ile 10 arası. Varsayılan 3. Değer büyüdükçe daha az bulgu üretilir. |
| **Değerlendirmeden önceki değer sayısı (ısınma)** | En az 5, en çok pencere boyutu kadar. |

Çıkışları: **olağan dışı** ve **normal**. Isınma süresince her değer normal kabul edilir.

### Dönemsel özet

**A**. Her dönem için tek bir sonuç üretir.

| Ayar | Değerler |
| --- | --- |
| **Değer** | Veri noktası. |
| **Özet** | ortalama, en düşük değer, en yüksek değer, değerlerin toplamı, değer sayısı, sayaç değişimi, zamana göre toplam (değer × saat). |
| **Dönem** | 15 dakika, 30 dakika, saat, 4 saat, vardiya (8 saat), 12 saat, gün. |
| **Sonuç alanı**, **Saat dilimi** | |

Çıkışları: **dönem** ve **toplanıyor**. Sonraki dönemin ilk değeri geldiğinde **dönem** çıkışı bir kez tetiklenir;
diğer tüm değerler **toplanıyor** çıkışına gider. İçinde bulunulan dönemden daha eski bir değer dikkate alınmaz.

## Yönlendir

### Koşullu yönlendir

**T A**. Veriyi **doğru** ya da **yanlış** çıkışına gönderir. **Koşul türü** için iki seçenek vardır:

- **Sayısal karşılaştırma**: **Giriş alanı**, **İşleç** (`>`, `>=`, `<`, `<=`, `==`, `!=`) ve **Eşik**.
- **Koşullar (tümü / herhangi biri)**: **Filtre** düğümündeki koşulların aynısı.

Veri kaydedildikten sonra çalışan bir akışta bu düğüme bir süre de verilebilir. Düğüm, veriyi **doğru** çıkışına
ancak koşul her cihazda o süre boyunca kesintisiz sağlandığında gönderir. Süreyi oluşturucunun **Koşullar** adımı
ayarlar ("bu durum … sn sürünce"). Kalkış anındaki dalgalanmanın ya da gürültülü bir değerin alarm açacağı yerlerde
kullanın.

### Dallara ayır

**T**. Veriyi **Dal sayısı** kadar paralel dala kopyalar (2 ile 16 arası). Çıkışları **dal 1**'den **dal N**'ye
kadar numaralanır.

### Durdur

**T**. Dalı bitirir; veri daha ileri gitmez. Ayarı: **Neden**.

### Karantina

**T**. Şüpheli veriyi incelenmek üzere normal işlemden ayırır. Ayarı: **Neden**. Dalı bitirir.

### Devam et

**T**. İşlenen verinin kaydedilmesini ve veri hedeflerine gönderilmesini sağlar. Dalı bitirir.

### Alarm durumu

**A**. Bu işlem akışının cihaz için açtığı alarmın durumuna bakar ve veriyi **doğru** ya da **yanlış** çıkışına
gönderir. **Alarm şu durumdaysa TRUE çıkışına git** ayarı **Açık**, **Kapalı (veya hiç açılmadı)** ya da **Açık ve
merkez sunucuda onaylandı** olabilir. **Alarm** ayarında tek bir alarm anahtarı ya da bu işlem akışının herhangi bir
alarmı seçilir.

## Otomasyon

### Alarm aç

**A**. Alarm açar; alarm zaten açıksa onu günceller. Dalı bitirir.

| Ayar | Değerler |
| --- | --- |
| **Alarm anahtarı** | Kısa bir ad. **Alarmı kapat** düğümü de aynı anahtarı kullanır. |
| **Önem derecesi** | Bilgi, Uyarı (varsayılan), Kritik. |
| **Mesaj** | En çok 512 karakter. |
| **Kaynak anahtarı** | Alarmın neyle ilgili olduğu. Varsayılan `device.id`. |

### Alarmı kapat

**A**. Bu işlem akışında daha önce açılan bir alarmı kapatır. **Kapatılacak alarm** ayarında işlem akışının alarm
anahtarlarından biri seçilir. Dalı bitirir.

### Bildirim

Panel adı **Bildirim gönder**. **A**. **Mesaj** alanındaki metni seçilen **Bildirim kanalı** üzerinden gönderir.
Dalı bitirir. Ayrıntılar için [Bildirim kanalları](https://proxus.io/tr/docs/reference/notification-channels) sayfasına bakın.

## Dış eylemler

Dış eylemler Proxus'un dışındaki sistemlere ulaşır ve yalnızca işlem akışı **Canlı** modda yayınlandığında çalışır.
**Deneme** modunda eylem gerçekleşmez; yalnızca yapılacak olan işlem kaydedilir. **Hedefe gönder**, **Cihaza yaz**
ve **API çağır** düğümlerinin çalışması için Edge Gateway'de `[Flows] EffectsEnabled = true` ayarı da gerekir. Ayrıntılar
için [Yapılandırma anahtarları](https://proxus.io/tr/docs/reference/configuration#flows) sayfasına bakın.

### Hedefe gönder

**A**. Veriyi veri hedeflerine gönderir. Dalı bitirir.

| Ayar | Değerler |
| --- | --- |
| **Hedefler** | **Cihazın mevcut hedefleri**, **Belirli bir giden kanal** (bu durumda **Giden kanal** seçilir) ya da **Yalnızca platform depolaması (veri noktası olarak kaydet)**. |
| **En kısa aralık (ms)** | En az 100. Varsayılan 1.000. |

Bu gönderim, cihazın normal gönderimine ek olarak yapılır; cihazın hedeflerine giden veri akışı aynen sürer.

### Cihaza yaz

**A**. Bir cihazın veri noktasına değer yazar. Dalı bitirir.

| Ayar | Değerler |
| --- | --- |
| **Cihaz** | **Verinin geldiği cihaz** ya da **Belirli bir cihaz** (bu durumda **Sabit cihaz** seçilir). |
| **Yazılabilir adres** | Salt okunur olmayan bir veri noktası. |
| **Değer alanı** | Yazılacak değerin bulunduğu alan. |
| **En az**, **En çok** | Bu aralığın dışındaki değerler yazılmaz ve **hata** çıkışına gider. |
| **En kısa aralık (ms)** | Varsayılan 1.000. |

Yazma işlemi 10 saniyelik zaman aşımıyla bir kez denenir. Zaman aşımına uğrayan yazma tekrarlanmaz.

### API çağır

**A**. **REST API** türündeki bir veri hedefinden tek bir değer alır ve bu değeri bir cihazın veri noktası olarak
kaydeder. Dalı bitirir.

| Ayar | Değerler |
| --- | --- |
| **API bağlantısı** | **REST API** türünde bir veri hedefi. |
| **Cihaz** | Değerin kaydedileceği cihaz. |
| **Yol (isteğe bağlı)** | Hedefin adresine eklenir ve `/` ya da `?` ile başlar. Sunucu adresini değiştiremez. |
| **Yanıttaki değer** | Değerin yanıt içindeki yeri, örneğin `data.items[0].price`. |
| **Kaydedileceği veri noktası** | Veri noktasının adı. |

Her çağrının zaman aşımı 20 saniyedir.

## İzle

### İzleme kaydı

Panel adı **Adım adım izleme**. **T A**. **Adım adım izleme** sekmesinde göstermek için verinin kısa bir canlı
örneğini tutar. Ayarı: **İzleme etiketi**.

### Hatalar

**T A**. Bir adımda hata veren verileri toplar ve sayar. Düğümlerin **hata** çıkışlarını bu düğüme bağlayın.

## Bir işlem akışının sınırları

| Sınır | Değer |
| --- | --- |
| Düğüm sayısı | 1 ile 128 arası |
| Bağlantı sayısı | 256 |
| Tanım boyutu | 256 KB |
| Otomasyon işlem akışındaki kaynak sayısı | 8 |
| Bir düğümden çıkan dal sayısı | 16 |
| Bir düğümün pencere boyutu | 1.024 değer |
| Bir Edge Gateway'deki işlem akışı sayısı | 256 |
| Ad uzunluğu | 1 ile 120 karakter arası |

İşlem akışında döngü olamaz ve her düğüme bir kaynaktan ulaşılabilmelidir. **Adım adım izleme** sekmesi her
işlem akışı için son 64 kaydı tutar.

## Sonraki adımlar

- [İşlem akışları](https://proxus.io/tr/docs/automate/pipelines): işlem akışını kurma, test etme ve yayınlama.
- [İşlem akışları ve alarm kuralları](https://proxus.io/tr/docs/concepts/pipelines-and-rules): hangisinin ne zaman kullanılacağı.
- [Otomasyon sorunlarını giderme](https://proxus.io/tr/docs/troubleshoot/automation): işlem akışı hatalarının nedenleri ve çözümleri.
