Skip to main content

variables

variables, telemetry paketlerinde gelen her ölçüm değişkenini tanımlar. Bu tablo, ingress sırasında routing kararı almak için danışılır. Bir değişkene ait kayıt bulunamazsa veya is_active = false ise yalnız ilgili değişken atlanır; stream ve diğer geçerli ölçümler korunur.

Her record, bir değişkenin benzersiz kimliğini (id), hangi segment'e ait olduğunu (segment_id), veri tipini (data_type) ve birimini (unit) tanımlar. Operasyonel koşullara göre is_active flag'ı false'a çekilebilir; bu değişkene ait hiç bir paket kabul edilmezdeki o esnada.

Variable Routing Sözleşmesi

Measurement yazımı sırasında hedef tablo seçimi sabit if/else ile değil, variables + segment_code sözlüğü ile yapılır.

Routing adımları

  1. Payload'tan çıkarılan her variable_id için önce variables kaydı bulunur.
  2. variables.is_active = false ise ilgili değişken atlanır, operasyonel log yazılır ve akış sonraki değişkenle devam eder.
  3. variables.segment_id enum değeri (segment_code) doğrulanır.
  4. Segment enum eşlemesine göre hedef tablo deterministik olarak belirlenir.
  5. Hedef tabloda kolon eşlemesi yoksa ilgili değişken atlanır ve operasyonel log üretilir.
  6. Geçerli değişkenler hedef segment tablolara yazılır; başarısız değişkenler stream'i bozmaz.

Segment -> tablo eşlemesi

Qapu v1 için routing map'i aşağıdaki gibidir ve deterministiktir. Bu, variables tablosundaki segment_id enum değeri ile measurements_* tabloları arasındaki doğrudan eşlemedir:

Segment Enum DeğeriHedef Tablo
electric.voltagemeasurements_voltage
electric.currentmeasurements_current
electric.powermeasurements_power
electric.energymeasurements_energy
registermeasurements_register
devicemeasurements_device
locationmeasurements_location
environmentmeasurements_environment
watermeasurements_water
fota(metadata, ölçüm tablosu yok)

Bu enum değerleri deploy-time sözleşmesidir. Yeni segment eklenmesi veya değiştirilmesi migration + enum ALTER + doküman güncellemesi gerektirir.

Güvenlik kuralları

  • Aynı variable_id aynı stream içinde yalnız bir kez yazılmalıdır.
  • Segment enum değeri geçersiz/undefined olursa ilgili değişken atlanır ve loglanır.
  • Routing belirsizse varsayılan davranış değişken seviyesinde skip + log olmalıdır; stream yalnızca geçerli ölçümlerle devam eder.

Routing karar tablosu

DurumKoşulDavranışaccepted zincire etkisi
Bilinmeyen değişkenvariables kaydı yokİlgili değişken atlanır, operasyonel log üretilirStream korunur, diğer değişkenler yazılır
İnaktif değişkenvariables.is_active = falseİlgili değişken atlanır, operasyonel log üretilirStream korunur, diğer değişkenler yazılır
Segment var, kolon yoksegment_id enum değeri geçerli ama hedef tabloda kolon yokİlgili değişken atlanır, model/sözlük uyumsuzluğu loglanırStream korunur, diğer değişkenler yazılır
Tam eşleşmeSegment + kolon eşleşmesi varHedef segment tabloya yazılırStream korunur

Kolonlar

KolonTipNullAnlamı
idvarchar(30)hayırDeğişkenin benzersiz kimliği (örn: VRMS_R, TEMP, AE_R)
namevarchar(100)evetİnsan okunur değişken adı
descriptiontextevetDetaylı açıklama
unitvarchar(20)evetÖlçüm birimi (V, A, kWh, °C, %RH vb.)
segment_idsegment_codehayırBu değişkenin ait olduğu segment kodu (enum); ör: "electric.voltage", "register"
data_typevariable_data_typehayırVeri tipi enum'u
is_activebooleanhayırDeğişkenin aktif olup olmadığı (DEFAULT: true)
create_timetimestamphayırTanımın oluşturulma zamanı
update_timetimestamphayırSon güncelleme zamanı

segment_code Enum Tanımı

segment_code, telemetry sisteminde desteklenen tüm segment kategorilerini temsil eden enum tipidir. Statik bir tanımdır ve değişiklik migration gerektirir.

Enum DeğeriHedef TabloAnlamı
electric.voltagemeasurements_voltageFaz gerilim ve harmonik bileşenleri
electric.currentmeasurements_currentFaz akım ve temel bileşen
electric.powermeasurements_powerGüç faktörü ve reaktif güç
electric.energymeasurements_energyEnerji sayaç ve tüketim değerleri
registermeasurements_registerRegister değişkenleri ve durum kodları
devicemeasurements_deviceCihaz özellikleri ve meta verileri
locationmeasurements_locationKonum verileri
environmentmeasurements_environmentÇevresel ölçüm verileri
watermeasurements_waterSu ölçüm verileri
fota(none)FOTA versiyonu ve durum

variable_data_type Enum Sözleşmesi

Enum DeğeriAnlamı
numericOndalıklı sayısal değer (float, decimal)
integerTamsayı değer
booleanMantıksal true/false değer
stringMetin değeri
jsonJSON yapılı veri

Örnek Kayıtlar

{
"id": "VRMS_R",
"name": "Faz R RMS Gerilimi",
"description": "R fazı RMS gerilim değeri",
"unit": "V",
"segment_id": "electric.voltage",
"data_type": "numeric",
"is_active": true,
"create_time": "2026-04-03T10:00:00Z",
"update_time": "2026-04-03T10:00:00Z"
}

Özet: VRMS_R, electric.voltage segment'inde tanımlı; RMS gerilim ölçümüdür. Yazım measurements_voltage tablosuna yönlendirilir.