---
title: "IoT ve kamera analitiğini birleştirmek: MQTT ve olay tabanlı mimari"
author: "Abdulaziz Akyol"
author_url: https://www.abdulazizakyol.com/hakkimda/
url: https://www.abdulazizakyol.com/blog/iot-ve-kamera-analitigini-birlestirmek-mqtt-olay-tabanli-mimari/
language: tr
published: 2026-04-22
categories: ["IoT", "Yapay zekâ"]
tags: ["MQTT", "webhook", "olay şeması", "PLC", "MES", "sensör", "entegrasyon"]
translation: https://www.abdulazizakyol.com/en/blog/combining-iot-and-camera-analytics-mqtt-event-driven-architecture/
description: "Kamera en zengin sensördür. PLC, kapı kontağı ve sıcaklık sensörüyle aynı olay hattına bağlanınca yeni bilgi çıkar: olay şeması, MQTT konu yapısı ve dersler."
---

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

Yazar: [Abdulaziz Akyol](https://www.abdulazizakyol.com/hakkimda/) · 2026-04-22

## Öne çıkanlar

- IoT ve kamera analitiğini birleştirmenin temeli, kameradan, PLC'den, kapı kontağından ve sıcaklık sensöründen gelen her sinyali tek bir olay şemasına çevirmek ve kamerayı kaynaklardan biri olarak ele almaktır.
- Olay şemasında kaynak, tip, UTC zaman damgası, tesis, bölge, güven skoru, kural kimliği ve ek veri alanları bulunur; güven skoru, kameradan gelen olayın sensörden gelen olayla aynı ağırlıkta değerlendirilmemesi için vardır.
- Saha içinde MQTT kullanılır: hafiftir, yerel ağda 10 milisaniyenin altında gecikme verir ve yayın-abonelik modeli sayesinde yeni tüketici eklemek üreticiyi değiştirmez; ERP ve MES gibi dış sistemlere webhook ve REST ile gidilir.
- Asıl değer olayların birleşmesindedir: PLC'nin hat durdu sinyali ile kameranın 3 dakika boyunca operatör alanını boş görmesi birleşince gözetimsiz duruş olayı ortaya çıkar.
- Bu mimaride en sık hata zaman damgası uyumsuzluğudur; her kaynak NTP'ye bağlanmalı, her olay UTC ile damgalanmalı ve yerel saate yalnızca gösterimde çevrilmelidir.

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.intrusion` dinliyor, bakım ekibi `cx/gebze-01/plc-line2/#`. MQTT'de `+` bir konu seviyesinin tamamının yerine geçer, `#` ise yalnızca en sonda kalan tüm seviyeleri kapsar; `zone.*` ya da `plc-+` gibi kısmi eşleşme yoktur. Bu yüzden olay tipini tek seviyede tam adıyla tutmak, abonelikleri sade bırakır. 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](https://www.abdulazizakyol.com/blog/edge-mi-bulut-mu-goruntu-isleme-projelerinde-isleme-yeri/).

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ı](https://www.abdulazizakyol.com/blog/forklift-yaya-yakinlasma-tespiti-depo-guvenligi/) + 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](https://www.abdulazizakyol.com/blog/uretim-hattinda-oee-yi-kamera-ile-olcmek/) 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.

## Sık sorulan sorular

### MQTT nedir, görüntü analitiğinde neden kullanılır?

MQTT, yayın-abonelik (publish–subscribe) modeliyle çalışan hafif bir mesajlaşma protokolüdür. Saha içinde yerel ağda 10 milisaniyenin altında gecikme verir, yeni bir tüketici eklemek üreticiyi değiştirmez ve endüstriyel cihazların çoğu zaten MQTT konuşur.

### IoT olayları için MQTT konu yapısı nasıl kurulur?

Sahada cx/{site}/{source}/{type} biçiminde bir hiyerarşi kullanıyoruz; örneğin cx/gebze-01/cam-07/zone.intrusion ya da cx/gebze-01/plc-line2/machine.stop. Tüketiciler ihtiyaç duydukları konulara joker karakterle abone olur; broker sahada durur ve buluta yalnızca brokerdan köprülenen seçili konular çıkar.

### Kamera ve sensör olayları nasıl birleştirilir?

Birleştirme kuralları kural motorunda bir zaman penceresiyle tanımlanır: A olayından sonra N saniye içinde B olayı gelirse C üretilir. Örneğin elektrik odası kapısı açıldıktan sonra 30 saniye içinde alanda yetkili yelek görülmezse yetkisiz erişim olayı oluşur.

### Olay tabanlı mimaride saat senkronizasyonu neden önemlidir?

PLC'nin saati 40 saniye ileri, kamera yerel saat diliminde, sunucu UTC'de olduğunda A'dan sonra 30 saniye içinde B kuralı hiç çalışmaz. Her kaynak NTP'ye bağlanmalı, her olay UTC ile damgalanmalı ve yerel saate yalnızca gösterimde çevrilmelidir.

## Kaynaklar

1. [MQTT Specification (mqtt.org)](https://mqtt.org/mqtt-specification/)
2. [MQTT Version 5.0, OASIS Standard](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html)
3. [RFC 5905: Network Time Protocol Version 4](https://www.rfc-editor.org/rfc/rfc5905)

---

Abdulaziz Akyol, CX Teknoloji'nin (yapay zekâ, görüntü işleme ve IoT) kurucusudur. Asıl sürüm: https://www.abdulazizakyol.com/blog/iot-ve-kamera-analitigini-birlestirmek-mqtt-olay-tabanli-mimari/
