# Otomasyon sorunlarını giderme

> İşlem akışı, alarm kuralı ve fonksiyon hatalarını, otomasyonun neden dağıtılamadığını ya da çalışmadığını ve neleri kontrol edeceğinizi anlatır.

Kaynak: https://proxus.io/tr/docs/troubleshoot/automation

İşlem akışları, alarm kuralları ve fonksiyonlar Edge Gateway'lerde çalışır. Sorunların çoğu üç gruptan birine girer:
otomasyon Edge Gateway'e hiç ulaşmamıştır, Edge Gateway'e ulaşmıştır ama veri almaz ya da çalışır ama eylemi başarısız olur.
Bu sayfa her durumu ayrı ayrı ele alır.

## Çalışma durumu denetimlerindeki bulgular

| Bulgu | Anlamı | Ne yapılmalı |
| --- | --- | --- |
| **İşlem akışı yayınlandı ancak hiçbir yerde çalışmıyor** | İşlem akışı hiçbir Edge Gateway'e atanmamış ya da hiçbir Edge Gateway'e gönderilmemiş. | **Çalıştığı yer** alanında Edge Gateway'leri seçin ve yeniden yayınlayın. |
| **İşlem akışı hiçbir cihazı okumuyor** | İşlem akışının girişi, atandığı Edge Gateway'lerdeki hiçbir cihazla eşleşmiyor. | Kaynağın **Hangi veriler** koşullarını ve **Gerekli veri noktaları** ayarını kontrol edin. |
| **Kural, çözümlenebilen hiçbir veriyi okumuyor** | Alarm kuralının koşuluyla eşleşen hiçbir veri noktası ya da cihaz yok. | Koşuldaki veri noktalarının ve cihazların var olduğunu ve adlarının yapılandırmadakiyle aynı yazıldığını kontrol edin. |
| **Saha tarafı bu nesneyi reddetti** | Edge Gateway yapılandırmayı reddetti. | Nesneyi açın, hatayı okuyun, düzeltin ve yeniden dağıtın. |
| **Saha tarafında farklı bir sürüm çalışıyor** | Edge Gateway'in çalıştırdığı sürüm, yapılandırılan sürümle aynı değil. | Yeniden dağıtın ya da değişikliği geri alın. |
| **Her şey tek bir Edge Gateway'de çalışıyor** | Birçok alarm kuralı, fonksiyon ve veri hedefi tek bir Edge Gateway'e bağlı. | Bu bir hata değil, risk uyarısıdır. |

## İşlem akışları

### Dağıtım durumları

**Dağıtımlar** sekmesinde her Edge Gateway için bir satır bulunur. **Dağıtım** sütunu şu değerlerden birini gösterir:

| Durum | Anlamı |
| --- | --- |
| **İstendi** | Yayınlandı. Merkez sunucu birazdan Edge Gateway'e gönderecek. |
| **Bekliyor** | Gönderildi. Edge Gateway ya da işlem akışının ihtiyaç duyduğu cihazlar bekleniyor (`Cihazlar bekleniyor`). |
| **Etkin** | Edge Gateway tam olarak bu revizyonu çalıştırıyor. |
| **Başarısız** | Edge Gateway revizyonu reddetti. Nedeni **Son hata** alanında yazar. |
| **Sapma var** | Edge Gateway bu revizyondan farklı bir şey çalıştırıyor (`Çalışan plan farklı`). Yeniden yayınlayın. |
| **Devre dışı** | İşlem akışı bu Edge Gateway'de durduruldu. |

İşlem akışının çalışma durumu şu değerlerden biridir: **Sorunsuz**, **Eşitleniyor**, **Çevrim dışı** (Edge Gateway rapor
göndermeyi bıraktı), **İlgilenilmesi gerekiyor** ya da **Çalışma kanıtı yok**. **Yaşam sinyali gecikti**, Edge Gateway'in işlem
akışının durumunu bir süredir göndermediğini; **Hiç bildirim yok** ise hiç göndermediğini gösterir. Her iki durumda
da Edge Gateway'in çevrim içi olduğunu kontrol edin.

### Hata metinleri

Hatalar tuvalde, **Dağıtımlar** sekmesinde ve **Adım adım izleme** sekmesinde kısa metinler olarak görünür:

| Metin | Anlamı | Ne yapılmalı |
| --- | --- | --- |
| `İşlem akışı derlenemedi`, `Doğrulama başarısız` | İşlem akışının tanımında hata var. **Doğrula**, hataları düğüm düğüm listeler. | Adı geçen düğümü düzeltin. |
| `Edge Gateway seçilmedi` | **Çalıştığı yer** alanı boş. | Bir Edge Gateway seçin. |
| `Adımlar döngü oluşturuyor`, `Çok fazla adım`, `Çok fazla bağlantı`, `Tanım çok büyük` | [İşlem akışı](https://proxus.io/tr/docs/reference/pipeline-nodes#bir-işlem-akışının-sınırları) sınırlarından biri aşıldı. | İşlem akışını birkaç parçaya bölün. |
| `Formül geçersiz`, `Formül çok karmaşık` | **Hesapla** düğümündeki formül hatalı ya da çok uzun. | Adları ve parantezleri kontrol edin. |
| `Formül hesaplanamadı` | Çalışma sırasında sıfıra bölme oluştu ya da bir değer eksik veya geçersiz. | Girişi bir **Koşullu yönlendir** düğümüyle denetleyin ya da **hata** çıkışını bir **Hatalar** düğümüne bağlayın. |
| `Giriş verisi geçersiz kalitede` | Hesaplama yapan bir düğüme veri kalitesi **Geçerli** olmayan bir değer geldi. | Cihazın veri noktası hatalarını kontrol edin. |
| `İki giriş de bekleniyor` | **Birleştir** düğümü iki değerden yalnızca birini aldı. | İşlem akışı başladıktan hemen sonra normaldir. İki cihazın da veri gönderdiğini kontrol edin. |
| `Geç gelen veri yok sayıldı` | Zaman penceresinden daha eski bir okuma geldi. | Cihazın saatini ya da pencere ayarını kontrol edin. |
| `Dış eylemler devre dışı` | **Cihaza yaz**, **API çağır** ya da **Hedefe gönder** düğümü Canlı modda, ancak Edge Gateway'de `[Flows] EffectsEnabled = false` ayarlı. | Bu ayarı o Edge Gateway'de `true` yapın ve Edge Gateway'i yeniden başlatın. |
| `Eylem hız sınırına ulaşıldı` | Aynı eylem, **En kısa aralık (ms)** değerinden daha sık tetiklendi. | Aralığı büyütün ya da bir **Tekrar bastırma** düğümü ekleyin. |
| `Eylem kuyruğu dolu` | Edge Gateway'in çalıştırabileceğinden fazla eylem birikti. | Eylem sayısını azaltın ya da `[Flows] EffectQueueCapacity` değerini artırın. |
| `Salt okunur adres`, `Yazma adresi bulunamadı`, `Cihaza yazılamadı`, `Desteklenmeyen yazma veri türü` | **Cihaza yaz** başarısız oldu. | Veri noktasının var olduğunu, yazılabilir ve sayısal olduğunu kontrol edin. Cihaz da yazmaya izin vermelidir. |
| `API çağrısı başarısız`, `API zaman aşımı`, `API'ye ulaşılamıyor`, `API, HTTP <kod> yanıtı verdi` | **API çağır** başarısız oldu. | REST API hedefini **Denetle** ile test edin. |
| `Veri hedefine gönderilemedi`, `Veri hedefi çalışmıyor`, `Gönderilecek veri yok` | **Hedefe gönder** başarısız oldu. | Hedefte **Denetle**'yi çalıştırın. |
| `Bildirim kanalı bulunamadı` | **Bildirim** düğümünde seçili kanal artık yok. | Var olan bir kanal seçin. |
| `Kontrol noktası deposu kullanılamıyor`, `Kontrol noktası çok büyük`, `Kontrol noktası deposu dolu` | Edge Gateway, işlem akışının durumunu kaydedemiyor. | Edge Gateway'de disk alanı açın ve daha küçük pencereler kullanın. |

### İşlem akışı çalışıyor ama hiçbir şey yapmıyor

- **İşlem akışı Deneme modunda yayınlanmış.** Deneme modunda işlem akışı, ne yapacağını **Adım adım izleme**
  sekmesine kaydeder, ancak eylemi gerçekleştirmez. **Canlı yayınla**'yı kullanın.
- **Edge Gateway'de dış eylemler kapalı** (`Dış eylemler devre dışı`, yukarıdaki tabloya bakın).
- **Filtre ya da Koşullu yönlendir düğümü her şeyi yanlış (false) çıkışına gönderiyor.** **Adım adım izleme**
  sekmesine bakın ya da **Test** sekmesinde örnek veriyle çalıştırın.
- **Edge Gateway kapalıyken Zamanlama düğümü tetiklenmedi.** Kaçırılan çalıştırmalar sonradan telafi edilmez.

## Alarm kuralları

Alarm kuralları, izledikleri cihazın bağlı olduğu Edge Gateway'de çalışır. Hataları ayrı bir ekranda değil, Edge Gateway'in
günlüğünde görünür. [Sistem günlükleri](https://proxus.io/tr/docs/administer/system-logs) ekranını açın ve şu mesajları arayın:

| Günlük mesajı | Anlamı |
| --- | --- |
| `Error while evaluating rule '<name>': ...` ya da `Error evaluating rule '<name>': ...` | Koşul çalışma sırasında hata verdi; örneğin değer beklenenden farklı türde geldi. |
| `Failed to compile criteria for rule '<name>' ...` | Koşul oluşturulamıyor. Veri noktası adlarını ve operatörleri kontrol edin. |
| `<action> limit reached for rule '<name>'. Next ... allowed at ...` | Alarm kuralı, eylem sınırının izin verdiğinden daha sık tetiklendi. Fazla eylemler atlanır. |

Alarm kuralı hiç tetiklenmiyorsa cihazın bağlı olduğunu, koşuldaki veri noktasının tam olarak bu adla var olduğunu
ve Edge Gateway'in çevrim içi olduğunu kontrol edin. Bkz. [Alarm kuralları](https://proxus.io/tr/docs/automate/rules).

Alarm kurallarının gönderdiği bildirimler ulaşmıyorsa kanalı **Test et** ile deneyin (bkz.
[Bildirim kanalları](https://proxus.io/tr/docs/reference/notification-channels#bir-kanalı-test-etme)). Başarısız bir gönderim, vazgeçilmeden önce yaklaşık
bir saat boyunca yeniden denenir.

## Fonksiyonlar

### Derleme hataları

**Derle** düğmesi fonksiyonu derler ve hataları gösterir. Olası mesajlar:

| Mesaj | Anlamı |
| --- | --- |
| `Derleme başarılı.` | Fonksiyon dağıtıma hazır. |
| `Compile Error` ve altında `CS0103 (line 12, column 9): The name 'x' does not exist in the current context` gibi satırlar | Bir C# hatası. Satır ve sütun numarası hatanın yerini gösterir. |
| `Blacklisted namespace used: System.IO. Reason: For security reasons, direct filesystem access is not permitted.` | Kod, fonksiyonlarda kullanılmasına izin verilmeyen bir namespace kullanıyor. Bkz. [Functions SDK](https://proxus.io/tr/docs/develop/functions-sdk#derleyicinin-sundukları). |
| `Fonksiyon kodu ve adı boş olamaz.` | Fonksiyonun adını ve kodunu girin. |
| `<ad> adlı bir fonksiyon zaten var. Farklı bir ad seçin.` | Başka bir ad seçin. |
| `Unable to find the actor type in the compiled assembly.` | Kodda `FunctionBase` sınıfından türeyen bir sınıf yok. |
| `Actor ctor failed: ...` | Constructor bir exception fırlattı. Üç argümanı `FunctionBase` sınıfına olduğu gibi aktarın ve constructor içinde başka iş yapmayın. |

### Dağıtım hataları

| Mesaj | Anlamı |
| --- | --- |
| `Function '<name>' deployed to <n> gateway(s): <names>` | Fonksiyon dağıtıldı. |
| `Deployment timed out (no gateway confirmation)`, `Gateway did not respond to deploy request` | Edge Gateway çevrim dışı ya da meşgul. |
| `Failed to deploy to <n> gateway(s): <reasons>` | Edge Gateway dağıtımı reddetti. Nedeni mesajın devamında yazar. |
| `The function is currently being processed. Please wait.` | Bu fonksiyon için başka bir derleme ya da dağıtım sürüyor. |

### Fonksiyon dağıtıldı ama hiçbir şey yapmıyor ya da durdu

- **Fonksiyon hiçbir şeye abone değil.** Aboneliği `base.OnStarted()` çağrısından önce ekleyin. Bkz.
  [Functions SDK](https://proxus.io/tr/docs/develop/functions-sdk#abonelikler).
- **Fonksiyonun dağıtımı çok sayıda exception sonrasında kaldırıldı.** Fonksiyon `ExceptionThresholdPerFunction` kadar
  exception fırlatınca (varsayılan 10) Edge Gateway fonksiyonun dağıtımını kaldırır ve sınıra ulaşıldığını günlüğe
  yazar. Nedeni giderin ve fonksiyonu yeniden dağıtın.
- **Günlükte satır görünmüyor.** `LogLevelPolicy`, her düzey için yazılabilecek günlük satırı sayısını sınırlar.
  Sınır aşılınca bir uyarı yazılır ve süre penceresi dolana kadar sonraki satırlar atlanır.
- **`Save skipped: missing or invalid DeviceId in MetaData.`** Fonksiyon, cihaz ID'si olmayan bir okumayı
  kaydetmeye çalıştı.

Fonksiyonun günlük satırlarını fonksiyonun **Günlükler** sekmesinde ya da
[Sistem günlükleri](https://proxus.io/tr/docs/administer/system-logs) ekranında okuyabilirsiniz.

## Sonraki adımlar

- [İşlem akışı düğümleri](https://proxus.io/tr/docs/reference/pipeline-nodes): her düğümün ayarları ve işlem akışı sınırları.
- [Functions SDK](https://proxus.io/tr/docs/develop/functions-sdk): fonksiyon yazma, abonelikler ve izin verilen API'ler.
- [Edge Gateway sorunlarını giderme](https://proxus.io/tr/docs/troubleshoot/gateways): otomasyonun çalıştığı Edge Gateway bağlı değilse.
