Skip to main content

Master Data & Operations

Bu sayfa, Cınga backend içinde tekrar kullanılan sözlük tablolarını, servis/operasyon tablolarını ve telemetry dışındaki yardımcı veri katmanlarını detaylı biçimde açıklar.

Bu tablolar doğrudan paket işlemez; fakat sistemin ortak dilini, servis görünürlüğünü ve operasyonel izlenebilirliğini sağlar.

Bu Katmanın Amacı

Bu katman üç farklı ihtiyacı karşılar:

  1. Master data / sözlük
    • üretici, model, ekipman tipi, değişken, proje, mesaj tipi gibi ortak tanımlar
  2. Operasyon / log
    • servisler, log seviyeleri, log kayıtları
  3. Tekrarlı referansların normalize edilmesi
    • aynı isim ve açıklamaların bütün sistemde tek kaynaktan gelmesi

1. projects

projects, ürün ailelerini ve çözüm versiyonlarını tanımlar.

Neden vardır?

Cınga, PowerStat, Maraba, WeatherStat gibi ürün aileleri aynı veri modelini paylaşabilir; ancak firmware, register yapısı, komut sözlüğü ve rule mantıkları proje bazında farklılaşabilir.

Kolonlar

KolonTipNullAnlamı
idinthayırProje anahtarı
namevarchar(100)hayırProje adı
descriptiontextevetAçıklama
is_activebooleanhayırAktiflik
create_timetimestamphayırOluşturma
update_timetimestamphayırGüncelleme

2. manufacturers

Üretici sözlüğünü taşır.

Neden vardır?

Motor, sürücü, softstarter, modem, trafo ve cihaz gibi farklı ekipmanların üreticisi tekrar eden master data’dır. Serbest text yerine ortak sözlük daha sağlıklıdır.

Kolonlar

KolonTipNullAnlamı
idinthayırÜretici anahtarı
namevarchar(100)hayırÜretici adı
descriptionvarchar(255)evetAçıklama
is_activebooleanhayırAktiflik
create_timetimestamphayırOluşturma
update_timetimestamphayırGüncelleme

3. equipment_types

Ekipman tipi sözlüğünü tutar.

Neden vardır?

manufacturer_models tablosu çok farklı fiziksel varlık türlerini tek yerde tanımlayabilir; bunu mümkün kılan şey modelin hangi ekipman tipine ait olduğunun açıkça belirtilmesidir.

Kolonlar

KolonTipNullAnlamı
idinthayırTip anahtarı
codevarchar(50)hayırTeknik kod
namevarchar(100)hayırİnsan okunur ad
descriptionvarchar(255)evetAçıklama
is_activebooleanhayırAktiflik
create_timetimestamphayırOluşturma
update_timetimestamphayırGüncelleme

4. manufacturer_models

Bu tablo üretici + ekipman tipi + model kombinasyonunu taşır.

Neden vardır?

Aynı üreticinin birden çok motoru, sürücüsü, softstarter’ı veya cihaz modeli olabilir. Teknik özellikler model seviyesinde tanımlanmalıdır.

Kolonlar

KolonTipNullAnlamı
idinthayırModel anahtarı
manufacturer_idinthayırÜretici
equipment_type_idinthayırEkipman tipi
namevarchar(100)hayırModel adı
seriesvarchar(100)evetSeri/familya
descriptionvarchar(255)evetAçıklama
specsjsonevetTeknik özellikler
is_activebooleanhayırAktiflik
create_timetimestamphayırOluşturma
update_timetimestamphayırGüncelleme

Örnek kayıt

{
"id": 6,
"manufacturer_id": 3,
"equipment_type_id": 7,
"name": "PSE370-600-70",
"series": "PSE",
"description": "ABB soft starter modeli",
"specs": { "nominal_current_a": 370, "voltage_v": 400 },
"is_active": true
}

5. variables ve variable_segments

Bu iki tablo sistem içindeki measurement sözlüğünü oluşturur.

variable_segments

Segment düzeyi sınıflandırma sağlar.

Örnek segmentler:

  • Electrical
  • Environmental
  • Status
  • Energy

variables

Her ölçüm değişkeninin resmi tanımıdır.

Kolonlar (variables)

KolonTipNullAnlamı
idvarchar(30)hayırDeğişken kodu
namevarchar(100)evetİnsan okunur ad
descriptiontextevetAçıklama
unitvarchar(20)evetBirim
segment_idinthayırSegment
data_typeenumhayırnumeric / integer / boolean / string / json
ct_calibrationbooleanhayırCT kalibrasyonu gerekli mi
is_activebooleanhayırAktiflik
create_timetimestamphayırOluşturma
update_timetimestamphayırGüncelleme

Neden önemlidir?

Bu tablo hem measurement tarafında hem synthesis/calibration/rule tarafında ortak referans olur. Bu yüzden veri modelinin en kritik sözlüklerinden biridir.

6. message_types

Telemetry paket tiplerinin sözlüğüdür.

Neden vardır?

timed, interrupt, alarm, manual, boot gibi paket tiplerini serbest string olarak kullanmak yerine normalize etmek accepted stream’lerin yorumlanmasını kolaylaştırır.

Kolonlar

KolonTipNullAnlamı
idinthayırTip anahtarı
codevarchar(30)hayırTeknik kod
descriptiontexthayırAçıklama
is_activebooleanhayırAktiflik
create_timetimestamphayırOluşturma
update_timetimestamphayırGüncelleme

7. firmwares

Firmware sürüm bilgisini taşır.

Neden vardır?

Cihaz modeli ile yüklü firmware aynı şey değildir. Aynı proje içinde farklı sürümler olabilir; beta, stable, rc ve deprecated kanalları ayrı tutulmalıdır.

Kolonlar

Bu tablo sürüm, kanal, dosya bilgisi, hash ve release note taşır. Özellikle şu alanlar kritik rol oynar:

  • project_id
  • version
  • version_code
  • channel
  • file_url
  • hash_md5
  • hash_sha256

Bu yapı OTA, firmware görünürlüğü ve cihaz sürüm yönetimi için önemlidir.

8. register_structure

Bu tablo register bit anlam sözlüğünü proje bazında tanımlar.

Neden vardır?

Aynı register bit farklı projelerde farklı anlam taşıyabilir. Bu nedenle register bit açıklamasını kod içine gömmek yerine proje bazlı sözlükte tutmak daha doğrudur.

Kolonlar

KolonTipNullAnlamı
idinthayırKayıt anahtarı
project_idinthayırProje
bitinthayırBit numarası
namevarchar(50)hayırTeknik isim
descriptionvarchar(255)evetAçıklama
default_stop_enabledbooleanhayırVarsayılan stop davranışı
default_publish_enabledbooleanhayırVarsayılan publish davranışı
is_activebooleanhayırAktiflik
create_timetimestamphayırOluşturma
update_timetimestamphayırGüncelleme

9. device_commands

Bu tablo cihaz komut sözlüğünü taşır.

Neden vardır?

Restart, register set, zaman senkronizasyonu veya publish mask ayarı gibi komutları kod içine dağılmış metinler olarak değil, proje bazlı sözlük olarak tanımlamak gerekir.

Kolonlar

KolonTipNullAnlamı
idinthayırKomut anahtarı
project_idinthayırHangi projede geçerli
codevarchar(50)hayırKomut kodu
end_pointvarchar(150)hayırHedef endpoint
templatetexthayırParametreli komut şablonu
timeout_msinthayırTimeout
descriptionvarchar(255)evetAçıklama
is_activebooleanhayırAktiflik
create_timetimestamphayırOluşturma
update_timetimestamphayırGüncelleme

10. services, log_levels, logs

Bu üçlü operasyonel görünürlük katmanını oluşturur.

services

Servis sözlüğünü taşır.

Amaç:

  • logların hangi servis tarafından üretildiğini normalize etmek
  • servis isimlerini koddan bağımsız sözlük olarak tutmak

log_levels

Log severity sözlüğüdür.

logs

Gerçek operasyon log kaydıdır.

Neden vardır?

Sistem davranışını üretim ortamında anlamak için structured log gerekir. Özellikle ingest, heartbeat, rule engine ve push worker gibi servisler cihaz veya stream bağlamlı log üretmelidir.

logs kolonları

KolonTipNullAnlamı
idbiginthayırLog anahtarı
level_idinthayırLog seviyesi
service_idintevetHangi servis üretti
event_codevarchar(50)evetTeknik olay kodu
device_idvarchar(21)evetCihaz bağlamı
user_idintevetKullanıcı bağlamı
stream_idintevetStream bağlamı
messagetexthayırKısa açıklama
detailsjsonevetStructured detay
create_timetimestamphayırLog zamanı

Örnek kayıt

{
"id": 1,
"level_id": 2,
"service_id": 2,
"event_code": "STREAM_RECEIVED",
"device_id": "46000000C47CA670",
"stream_id": 5001,
"message": "Ham veri paketi başarıyla işlendi.",
"details": { "payload_size": 512, "ip": "10.10.1.25" },
"create_time": "2026-04-03T10:30:00Z"
}

11. synthesis.* ve calibration.*

Bu tablolar türetilmiş veri ve kalibrasyon kurallarını tanımlar.

synthesis.rules

Bir değişkenin başka değişkenlerden nasıl üretileceğini tanımlar.

synthesis.assignments

Bu sentez kuralının:

  • global,
  • cihaz bazlı,
  • grup bazlı hangi scope’ta aktif olduğunu belirler.

calibration.profiles

Gain/offset temelli kalibrasyon profillerini tanımlar.

calibration.assignments

Kalibrasyon profilinin hangi cihaz veya grup için geçerli olduğunu belirler.

Neden bu yapı önemli?

Çünkü türetilmiş veri ve kalibrasyon mantığı sabit kod yerine veri modeli ile yönetilebilir hale gelir. Ayrıca scope bazlı override davranışı mümkündür.

12. group.*

Bu alan cihaz veya kural kümelerini mantıksal olarak gruplamak için kullanılır.

group.groups

Bir grup nesnesinin kendisini taşır.

Gruplar şu amaçlarla kullanılabilir:

  • customer group
  • project group
  • synthesis group
  • reporting group
  • alarm group

group.assignments

Bir cihazın hangi gruba dahil olduğunu tutar.

Neden vardır?

Aynı kural, kalibrasyon veya raporlama mantığının cihazlara tek tek değil grup bazlı uygulanması için gerekir.

Sonuç

Master Data & Operations katmanı, Cınga backend’in ortak sözlüğünü ve operasyonel görünürlük temelini kurar. Bu tablolar doğrudan telemetry üretmese de, sistemin geri kalanının ortak dilde konuşmasını sağlar:

  • üretici ve model sözlüğü burada yaşar
  • değişkenlerin resmi tanımı burada yaşar
  • register bit ve cihaz komut sözlüğü burada yaşar
  • servisler ve log seviyeleri burada normalize edilir
  • sentez ve kalibrasyon kuralları burada tanımlanır

Bu katman iyi tasarlanmadığında sistemde isimler, anlamlar ve olay kodları dağılır. İyi tasarlandığında ise geri kalan bütün modüller aynı referans dilini konuşur.