Abdulaziz Akyol

IoT ve kamera analitiğini birleştirmek: MQTT ve olay tabanlı mimari

IoT · Yapay zekâ
22 Nisan 2026 · 3 dk okuma · Abdulaziz Akyol

Kamera analitiğini uzun süre ayrı bir sistem olarak kurduk: kendi sunucusu, kendi paneli, kendi uyarısı. Üretim müşterileriyle çalışmaya başlayınca bu ayrım anlamsızlaştı. Makinenin durduğunu PLC zaten biliyor, kamera operatörün orada olup olmadığını biliyor; ikisi birleşmeden "makine durdu, operatör yok, 4 dakika geçti" bilgisi çıkmıyor. O günden beri kamerayı bir sensör gibi ele alıyoruz. En zengin sensör, ama sensör.

Ortak dil: olay

Her kaynaktan gelen şey bir olaya çevriliyor. Kameradan "alan ihlali", kapı kontağından "kapı açıldı", PLC'den "hat durdu", sıcaklık sensöründen "eşik aşıldı". Olay şeması tek:

{
  "source": "cam-07",            // kaynak kimliği
  "type": "zone.intrusion",      // olay tipi, nokta ile hiyerarşi
  "ts": "2026-04-21T09:14:03Z",  // UTC zaman damgası
  "site": "gebze-01",
  "zone": "press-line-2",
  "confidence": 0.93,            // sensörlerde 1.0
  "rule": "r-118",
  "payload": { "duration_s": 12, "object": "person" }
}

Şemadaki her alanın bir nedeni var. site ve zone olmadan çok tesisli müşteride filtreleme yapılamıyor. confidence kameradan gelen olayın sensörden gelen olayla aynı ağırlıkta değerlendirilmemesi için var. rule alanı, olayın hangi kuralla üretildiğini gösteriyor; kural değişince eski olayların yorumu da değişiyor, bunu geriye dönük bilmek gerekiyor.

Taşıma: MQTT

Saha içinde MQTT kullanıyoruz. Nedenleri: hafif, yerel ağda 10 milisaniye altı gecikme, yayın-abonelik modeli sayesinde yeni bir tüketici eklemek üreticiyi değiştirmiyor, ve endüstriyel cihazların çoğu zaten konuşuyor. Konu yapısı:

cx/{site}/{source}/{type}
cx/gebze-01/cam-07/zone.intrusion
cx/gebze-01/plc-line2/machine.stop
cx/gebze-01/env-03/temp.high

Tüketiciler joker karakterle abone oluyor: vardiya amirinin paneli cx/gebze-01/+/zone.* dinliyor, bakım ekibi cx/gebze-01/plc-+/#. Broker sahada, sunucuyla aynı makinede ya da ayrı küçük bir kutuda. Buluta çıkan şey brokerdan köprülenen seçili konular; görüntü yine çıkmıyor.

Dışarıya, müşterinin kendi sistemlerine giden yol webhook ve REST. ERP ve MES ekipleri MQTT bilmiyor, HTTP POST biliyor. Aynı olay şeması JSON olarak gidiyor; CSV isteyen BI ekibi için saatlik dosya ayrıca düşüyor.

Birleştirme kuralları

Asıl değer olayların birleşmesinde. Birkaç gerçek örnek:

  • Makine durdu + operatör yok. PLC "hat durdu" diyor, kamera 3 dakika boyunca operatör alanında kimseyi görmüyor. Sonuç: gözetimsiz duruş olayı, bakım ve vardiya amirine bildirim. Yalnızca PLC ile duruşun nedeni bilinmez; yalnızca kamerayla makinenin durduğu bilinmez.
  • Kapı açıldı + alan ihlali. Elektrik odası kapı kontağı açıldı, 30 saniye içinde alanda yetkili yelek görülmedi. Sonuç: yetkisiz erişim. Kontak tek başına her açılışta alarm verirdi, kamera tek başına kapının açıldığını bilmezdi.
  • Sıcaklık yükseldi + duman. Sensör eşik aşımı, kamera aynı bölgede duman benzeri örüntü. İkisi ayrı ayrı yanlış alarm üretebilir, birlikte geldiğinde yangın öncesi olay.
  • Forklift yakınlaşması + ikaz rölesi. Kamera olayı üretiyor, MQTT üzerinden bölge kontrolcüsü röleyi çekiyor, ışık ve ses. Tersine yön: kamera tetikliyor, IoT uyguluyor.

Birleştirme kuralları kural motorunda, zaman penceresi ile: "A olayından sonra N saniye içinde B olayı gelirse C üret". Pencere ve kaynaklar arayüzden tanımlanıyor.

Saat

Bu mimaride en sık karşılaştığımız hata zaman damgası uyumsuzluğu. PLC'nin saati 40 saniye ileri, kameranın saati yerel saat dilimi, sunucu UTC. "A'dan sonra 30 saniye içinde B" kuralı hiç çalışmıyor. Kural: her kaynak NTP'ye bağlanır, her olay UTC ile damgalanır, yerel saate yalnızca gösterimde çevrilir. Bunu devreye alma kontrol listesinin ilk maddesi yaptık.

Geriye dönük sorgulama

Olaylar zaman serisi veri tabanında saklanıyor. "Geçen ay, 2. hatta, vardiya değişiminden sonraki ilk saatte gözetimsiz duruş kaç kez oldu" sorusu tek sorgu. OEE hesabı da aynı veriden çıkıyor; onu ayrı yazıda anlatacağım. Görüntü saklanmadığı için bu veri tabanı küçük kalıyor: 60 kameralı bir tesiste günde birkaç yüz MB.

Ders

Kamera analitiği tek başına satıldığında "güzel bir panel" olarak kalıyor. PLC, kapı kontağı, sıcaklık, POS ile aynı olay hattına bağlandığında operasyonun parçası oluyor. Fark teknik değil, mimari: ilk günden olay şemasını sabitlemek ve kamerayı istisna değil, kaynaklardan biri olarak tasarlamak.

MQTTwebhookolay şemasıPLCMESsensörentegrasyon

İletişim

Konuşalım.