Automation Servisi
Automation Servisi, kullanıcı veya sistem tarafından tanımlanan otomasyon kayıtlarını izleyerek belirli bir zamanda ya da periyodik aralıklarla cihazlara standart komut gönderimini yöneten scheduler/orchestrator katmanıdır.
Kullanıcı, UI üzerinden bir otomasyon programladığında (örneğin "şu saatte şu cihaza şu komutu gönder") bu kayıt automations tablosuna yazılır. Automation Servisi bu kaydı izler, tetiklenme zamanı geldiğinde device_command_id referansını ve yürütme bağlamını event olarak üretir. Cihazla doğrudan yalnızca Communication Servisi konuşur.
Sorumluluk
automationstablosundaki zamanı gelen (next_run_at <= now) aktif kayıtları tespit etmekautomations.device_command_idreferansını Communication Servisi'ne taşımakautomation_runstablosuna yürütme kaydı açmakautomations.statusve son çalışma bilgilerini güncellemek- Periyodik otomasyonlarda bir sonraki
next_run_atdeğerini hesaplamak repeat_countlimitine ulaşan otomasyonlarıcompletedolarak kapatmak- Yürütme sonucunu (
result_code,result_message) kayıt etmek - Hata durumunda
failedsonucunu tabloya yazmak
Tetikleyici Kaynaklar
| Kaynak | Açıklama |
|---|---|
| API | Kullanıcı UI üzerinden otomasyon oluşturur; kayıt doğrudan automations tablosuna yazılır |
| Sistem | Sistem dahili işlemler user_id=0 (rezerv sistem kullanıcısı) ile otomasyon kaydı açar |
| FOTA | Yazılım güncelleme servisi, güncelleme komutunu otomasyon üzerinden planlayabilir |
- automations: otomasyon tanımı, planlama alanları ve yaşam döngüsü durumu
- automation_runs: her yürütme denemesinin tarihsel kaydı
- device_commands: Automation'ın referans verdiği standart komut sözlüğü
Çalışma Kuralları
datetipi otomasyon belirli bir tarih/saatte tek sefer çalışır ve tamamlandığında kapanır.intervaltipi otomasyoninterval_secondsaralığıyla tekrar eder;repeat_countdolduğunda veya kayıt devre dışı bırakıldığında durur.- Her tetikleme için
automation_runstarafında ayrı bir yürütme izi oluşur. - Automation yalnızca
device_command_idreferansını ve yürütme bağlamını taşır; komut çözümleme Communication tarafında yapılır.
automations ve automation_runs kayıtları Redis cache + DB fallback modeli ile okunur. Servis önce Redis'e bakar; cache miss durumunda DB'den okuyup cache'e yazar. Yazma işlemleri (status güncellemeleri, yeni run kaydı) doğrudan DB'ye yapılır ve ilgili cache girdisi geçersiz kılınır (invalidate) ya da güncellenir.
Adım adım detaylar için Automation Servisi Akış Diyagramı sayfasına bakınız.
DB ve event yazım sırasını sequence diyagramında görmek için Veri Katmanları Arası Yazım Sırası sayfasına bakınız.
automation.command.requested.v1, automation.job.completed.v1 ve automation.job.failed.v1 event payload sözleşmeleri merkezi standart belgesinde tanımlanmıştır. Detaylar için Automation Event Envelopeları sayfasına bakınız.
Tetikleyici kaynaklar, interval hesabı ve repeat_count davranışı için Automation Servisi SSS sayfasına bakınız.
Güvenlik ve Operasyon
- Otomasyon oluşturma/güncelleme yalnızca yetkili roller tarafından yapılabilir.
device_command_idreferansı whitelist görevi görür; tanımsız komut gönderilemez.- Tüm otomasyon değişiklikleri audit kaydına yazılır.
user_id=0değeri sistem kaynaklı işlemler için ayrılmıştır; kullanıcı panelinde son kullanıcı hesabı olarak gösterilmez.
SLO
SLO (Service Level Objective), Automation Servisinin operasyonel olarak hangi performans seviyesinde calismasinin beklendigini tanimlar. Asagidaki hedefler izleme ve alarm mekanizmalarinin referansidir; sapma durumunda scheduler gecikmesi, kuyruk birikimi ve bagimli servis gecikmeleri acisindan inceleme yapilmalidir.
| Metrik | Hedef |
|---|---|
| Scheduler drift | < 5s |
| Komut iletim başarısı | > 99% |
| p95 dispatch gecikmesi | < 200ms |