Skip to main content

Automation Servisi Event Sözleşmeleri

Bu sayfa Automation Servisi tarafından üretilen event'lerin payload sözleşmelerini ve zorunlu alanlarını verir.

Event Haritası

EventNe zaman kullanılır?ProducerConsumerAmaç
automation.command.requested.v1Otomasyon tetiklenip komut gönderimi başlatılırkenAutomation ServisiCommunication ServisiCihaza iletilecek komutu bildirmek
automation.job.completed.v1Komut cihaz tarafından onaylandığındaCommunication ServisiAutomation ServisiBaşarılı yürütme sonucunu geri bildirmek
automation.job.failed.v1Komut iletimi başarısız olduğundaCommunication / Automation ServisiObserver/AlarmHata görünürlüğü

Ortak Envelope

{
"event": "<name>.v1",
"meta": {
"schema_version": 1,
"trace_id": "auto-9f3f",
"producer_service": "automation-service",
"produced_at": "2026-03-12T21:15:02.020Z",
"process_ms": 8
},
"context": {
"device_id": "400000011D081B70"
},
"data": {},
"error": null
}

automation.command.requested.v1

Açıklama

Automation Servisi, bir otomasyon kaydını tetiklediğinde bu event'i üretir. Event içinde yalnızca device_command_id referansı ve yürütme bağlamı taşınır. Communication Servisi bu event'i consume ederek device_commands kaydını çözer ve komutu cihaza iletir.

Örnek Payload

{
"event": "automation.command.requested.v1",
"meta": {
"schema_version": 1,
"trace_id": "auto-9f3f",
"producer_service": "automation-service",
"produced_at": "2026-03-12T21:15:02.020Z",
"process_ms": 8
},
"context": {
"device_id": "400000011D081B70"
},
"data": {
"automation_id": 1,
"run_id": 42,
"device_command_id": 2,
"trigger_type": "date",
"scheduled_at": "2026-03-12T21:15:00Z"
},
"error": null
}

Alan Tablosu

AlanTipZorunluAçıklama
eventstringEvetSabit değer: automation.command.requested.v1
meta.schema_versionintegerEvetEvent şema sürümü
meta.trace_idstringEvetDağıtık izleme kimliği
meta.producer_servicestringEvetSabit değer: automation-service
meta.produced_atdatetimeEvetEvent üretim zamanı
meta.process_msintegerEvetİşlem süresi (ms)
context.device_idstringEvetHedef cihaz kimliği
data.automation_idintegerEvetautomations.id
data.run_idintegerEvetautomation_runs.id
data.device_command_idintegerEvetdevice_commands.id
data.trigger_typestringEvetdate | interval
data.scheduled_atdatetimeEvetOtomasyonun tetiklendiği hedef zaman
errornullEvetİstek event'inde daima null

automation.job.completed.v1

Açıklama

Communication Servisi komutun cihaz tarafından başarıyla alındığını bildirmek için bu event'i üretir. Automation Servisi bu event'i consume ederek ilgili automation_runs kaydını günceller ve automations tablosundaki son çalışma bilgilerini yazar.

Örnek Payload

{
"event": "automation.job.completed.v1",
"meta": {
"schema_version": 1,
"trace_id": "auto-9f3f",
"producer_service": "communication-service",
"produced_at": "2026-03-12T21:15:05.340Z",
"process_ms": 3312
},
"context": {
"device_id": "400000011D081B70"
},
"data": {
"automation_id": 1,
"run_id": 42,
"device_command_id": 2,
"result_code": 200,
"result_message": "Komut başarıyla cihaza iletildi",
"acked_at": "2026-03-12T21:15:05Z"
},
"error": null
}

Alan Tablosu

AlanTipZorunluAçıklama
eventstringEvetSabit değer: automation.job.completed.v1
meta.producer_servicestringEvetSabit değer: communication-service
context.device_idstringEvetHedef cihaz kimliği
data.automation_idintegerEvetautomations.id
data.run_idintegerEvetautomation_runs.id
data.device_command_idintegerEvetÇalıştırılan device_commands.id
data.result_codeintegerEvetHTTP-benzeri sonuç kodu
data.result_messagestringHayırBaşarı mesajı
data.acked_atdatetimeEvetCihaz onay zamanı
errornullEvetBaşarı event'inde daima null

automation.job.failed.v1

Açıklama

Komut iletimi başarısız olduğunda veya cihaz onayı alınamadığında üretilir.

Örnek Payload

{
"event": "automation.job.failed.v1",
"meta": {
"schema_version": 1,
"trace_id": "auto-9f3f",
"producer_service": "communication-service",
"produced_at": "2026-03-12T21:16:02.120Z",
"process_ms": 60003
},
"context": {
"device_id": "400000011D081B70"
},
"data": {
"automation_id": 1,
"run_id": 42,
"device_command_id": 2
},
"error": {
"failed_stage": "dispatch",
"error_code": "AUTOMATION_DEVICE_TIMEOUT",
"error_message": "Cihazdan zamanında yanıt alınamadı",
"retryable": false,
"failed_at": "2026-03-12T21:16:02Z"
}
}

Alan Tablosu

AlanTipZorunluAçıklama
eventstringEvetSabit değer: automation.job.failed.v1
meta.producer_servicestringEvetcommunication-service veya automation-service
context.device_idstringEvetHedef cihaz kimliği
data.automation_idintegerEvetautomations.id
data.run_idintegerEvetautomation_runs.id
data.device_command_idintegerEvetBaşarısız çağrının device_commands.id değeri
error.failed_stagestringEvetpersist | command_lookup | dispatch | ack_timeout
error.error_codestringEvetMakine okunur hata kodu
error.error_messagestringEvetAçıklama
error.retryablebooleanEvetYeniden denenebilirlik (automation_runs kararı verir)
error.failed_atdatetimeEvetHata zamanı

Hata Kodları

Hata KoduAçıklama
AUTOMATION_DB_TRANSIENTGeçici DB bağlantı hatası
AUTOMATION_KAFKA_TRANSIENTGeçici Kafka publish hatası
AUTOMATION_DEVICE_TIMEOUTCommunication tarafında çözülmüş komut için yanıt zaman aşımı oluştu
AUTOMATION_DEVICE_UNREACHABLECommunication katmanı cihaza ulaşamadı
AUTOMATION_COMMAND_DISABLEDCommunication tarafında çözülen device_commands kaydı pasif bulundu
AUTOMATION_JOB_CANCELLEDYürütme sırasında otomasyon iptal edildi
AUTOMATION_COMMAND_LOOKUP_FAILEDCommunication tarafı device_command_id referansını çözümleyemedi