IoT Otomasyon

MQTT ile Ofis Doluluk Sensörü Ağları: PIR, mmWave ve CO2

PIR, mmWave ve CO2 algılama arasında nasıl seçim yapılacağı, odalar ve masalar için MQTT topic'lerinin nasıl tasarlanacağı ve doluluk verisinin kullanım raporlarına ve HVAC tasarrufuna nasıl dönüştürüleceği.

Varlık verisini bir bulut paneline gönderen küçük bir ofis doluluk sensörünün bulunduğu toplantı odası tavanı
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

Bir ofis doluluk sensörü ağı, hangi odaların ve masaların gerçekte ne zaman kullanıldığını söyler. Bu kullanım senaryosunda PIR, mmWave ve CO2 tabanlı algılamayı karşılaştıracak, doluluğu temiz bir topic tasarımıyla MQTT üzerinden yayınlayacak ve veriyi bir ConnectMQ broker üzerinde alan kullanım raporları ve talebe dayalı HVAC kontrolü için kullanacaksınız.

Doluluk Neden Ölçülür

Hibrit çalışma, ofis kullanımını öngörülemez hâle getirdi. Takvimde rezerve edilen toplantı odaları boş kalırken küçük odaklanma odaları hep dolu. Personelin yalnızca bir kısmının geldiği günlerde bile katlar tam programla ısıtılıp soğutuluyor. Doluluk verisi pratik soruları yanıtlar: hangi odalar gereğinden büyük, bir kat cuma günleri kapatılabilir mi, boş bölgelerde havalandırma azaltılabilir mi?

Rezervasyon sistemleri ve kart verileri resmin bir kısmını verir, ancak bir odadaki gerçek varlığı değil, niyeti ve girişi kaydederler. Sensörler bu boşluğu doldurur; MQTT de verilerini birçok binadan toplamanın doğal bir yoludur.

Doğru Algılama Teknolojisini Seçmek

Her teknolojinin kendine özgü bir hata biçimi vardır ve en iyi kurulumlar ikisini birleştirir.

Teknoloji Nasıl çalışır Güçlü yanları Zayıf yanları En uygun olduğu yer
PIR Hareket eden ısı kaynaklarını algılar Ucuz, düşük güç, olgun Hareketsiz oturan kişileri kaçırır; odaklanılan çalışmalarda odalar boş görünür Koridorlar, tuvaletler, aydınlatma kontrolü
mmWave radar Nefes alma dahil çok küçük hareketleri algılar Hareketsiz kişileri algılar, ince kapakların arkasından çalışır Ayarlanmazsa duvarların ötesini görüp komşuları algılayabilir; şebeke gücü veya büyük pil gerekir Toplantı odaları, odaklanma odaları, masalar
CO2 Artan CO2 yoğunluğu nefes alan insanlara işaret eder Aynı anda kabaca kişi sayısı ve hava kalitesi verir Yavaş (dakikalar), havalandırma oranına bağlı Havalandırma kontrolü, büyük odalar
Masa sensörleri Masa altında PIR veya termal Masa düzeyinde kullanım Bakımı yapılacak çok sayıda cihaz Paylaşımlı masa (hot-desking) analitiği
Termal dizi / kişi sayaçları Düşük çözünürlüklü ısı görüntüsü veya kapı girişinde sayım Görüntü olmadan kişi sayar Daha yüksek maliyet, dikkatli yerleşim Büyük açık alanlar, girişler

Toplantı odaları için yaygın ve sağlam bir kombinasyon, varlık için mmWave artı doğrulama ve havalandırma için CO2'dir. Tek başına PIR, insanlar neredeyse hiç kıpırdamadığı için uzun görüntülü görüşmelerde odayı boş olarak raporlama eğilimindedir.

Önce gizlilik

Doluluk verisi insanlarla ilgilidir. Görüntü yakalamayan sensörler kullanın, kimlik yerine varlık veya sayı yayınlayın ve topic'lere asla ad veya kart kimliği koymayın. Masa verisini geniş çapta paylaşmadan önce toplulaştırın ve kurulumdan önce yerel mevzuatı ve çalışan temsilcileriyle yapılan anlaşmaları kontrol edin.

MQTT Topic ve Payload Tasarımı

Wildcard'ların gerçek soruları yanıtlaması için topic'leri fiziksel hiyerarşiye göre modelleyin:

acme/ist01/hq/f03/meeting-301/occupancy        presence state (retained)
acme/ist01/hq/f03/meeting-301/co2              CO2 ppm
acme/ist01/hq/f03/desk-3-14/occupancy          desk presence (retained)

Bir varlık mesajı durumu, kaynağı ve son değiştiği zamanı taşımalıdır:

{
  "ts": "2026-10-16T09:41:07Z",
  "occupied": true,
  "source": "mmwave",
  "since": "2026-10-16T09:12:30Z",
  "count_estimate": null
}

Doluluğu retained olarak yayınlayın; böylece gün ortasında bağlanan bir panel mevcut durumu hemen gösterir. Değişiklikte ve birkaç dakikada bir kalp atışıyla yayınlayın; bu, trafiği çok küçük tutar ve yine de ölü bir sensörü tespit etmenizi sağlar. Klasör tarzı hiyerarşiyle acme/ist01/hq/f03/+/occupancy üçüncü kattaki her odayı ve masayı döndürür; ConnectMQ cihazlar görünümü de aynı topic'leri saha ve alana göre gruplayabilir.

Basit bir mmWave Sensör Düğümü

LD2410 ailesi gibi popüler düşük maliyetli mmWave modülleri, varlık algılandığında yüksek seviyeye geçen bir dijital çıkış pini sunar. Bir ESP32 bu pindeki sıçramaları bastırıp (debounce) değişiklikleri yayınlayabilir. Taslak, test için PubSubClient'ı ve herkese açık broker'ı kullanır.

#include <WiFi.h>
#include <PubSubClient.h>

const char* WIFI_SSID = "YOUR_WIFI";
const char* WIFI_PASS = "YOUR_WIFI_PASSWORD";
const char* BROKER = "broker.connectmq.com";
const int   PORT = 1883;
const char* TOPIC = "connectmq/demo/occ-5t2w/f03/meeting-301/occupancy";
const int   PRESENCE_PIN = 27;           // LD2410 OUT pini
const unsigned long HOLD_MS = 60000;     // son algılamadan sonra 60 sn "dolu" kal
const unsigned long HEARTBEAT_MS = 300000;

WiFiClient net;
PubSubClient mqtt(net);
bool occupied = false;
unsigned long lastSeen = 0, lastPublish = 0;

void publishState() {
  char msg[96];
  snprintf(msg, sizeof(msg), "{\"occupied\":%s,\"source\":\"mmwave\",\"uptime_s\":%lu}",
           occupied ? "true" : "false", millis() / 1000);
  mqtt.publish(TOPIC, msg, true);        // retained
  lastPublish = millis();
}

void connectMqtt() {
  while (!mqtt.connected()) {
    String id = "occ-" + String((uint32_t)ESP.getEfuseMac(), HEX);
    if (mqtt.connect(id.c_str())) {
      publishState();
    } else {
      delay(2000);
    }
  }
}

void setup() {
  pinMode(PRESENCE_PIN, INPUT);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) delay(250);
  mqtt.setServer(BROKER, PORT);
}

void loop() {
  if (!mqtt.connected()) connectMqtt();
  mqtt.loop();

  if (digitalRead(PRESENCE_PIN) == HIGH) lastSeen = millis();
  bool now = (millis() - lastSeen) < HOLD_MS && lastSeen != 0;

  if (now != occupied) {
    occupied = now;
    publishState();
  } else if (millis() - lastPublish > HEARTBEAT_MS) {
    publishState();
  }
  delay(100);
}

Tutma süresi (hold time) en önemli ayar parametresidir. Çok kısa olursa oda dolu ile boş arasında gidip gelir; çok uzun olursa insanlar çıktıktan sonra oda meşgul görünür. Toplantı odaları için altmış saniye ile birkaç dakika arası iyi çalışır. Radarın koridoru görmemesi için algılama menzilini tedarikçinin aracıyla ayarlayın.

Ham Varlıktan Kullanım Oranına

Ham açık/kapalı mesajları ancak toplulaştırıldığında faydalı hâle gelir. Küçük bir abone, oda ve gün başına odanın dolu olduğu çalışma saatlerinin payını hesaplayabilir. Minimal bir Python sürümü:

import json
import time
import uuid
from collections import defaultdict

import paho.mqtt.client as mqtt

PREFIX = "connectmq/demo/occ-5t2w"
occupied_since = {}
occupied_seconds = defaultdict(float)


def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe(f"{PREFIX}/+/+/occupancy", qos=1)


def on_message(client, userdata, msg):
    room = "/".join(msg.topic.split("/")[-3:-1])
    data = json.loads(msg.payload)
    now = time.time()
    if data["occupied"] and room not in occupied_since:
        occupied_since[room] = now
    elif not data["occupied"] and room in occupied_since:
        occupied_seconds[room] += now - occupied_since.pop(room)
    hours = occupied_seconds[room] / 3600
    client.publish(f"{PREFIX}/{room}/utilization",
                   json.dumps({"occupied_hours_today": round(hours, 2)}), retain=True)


client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"occ-agg-{uuid.uuid4().hex[:6]}")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, 60)
client.loop_forever()

Üretimde, haftalık zirveleri raporlayabilmek ve odaları büyüklüğe göre karşılaştırabilmek için geçişleri bir veritabanında saklayın.

Doluluğu HVAC Kontrolü için Kullanmak

Doluluk verisi, havalandırmayı ve sıcaklık geri çekmelerini (setback) yönettiğinde en hızlı geri dönüşü sağlar:

  1. Bir bölge belirli bir süre boş kaldığında, bir gateway sıcaklık ölü bandını genişletebilir veya hava debisini azaltabilir.
  2. CO2 hedefinizin üzerine çıktığında, varlık durumundan bağımsız olarak havalandırmayı artırın.
  3. Programlanmış doluluktan önce mekânı her zamanki gibi önceden şartlandırın; doluluk programı yalnızca kırpar, asla yerini almaz.
  4. Yerel kontrolü her zaman güvenli tutun: doluluk verisi gelmeyi keserse HVAC kontrolörü kendi programına geri dönmelidir.

BMS'e geri yazma yolu BACnet'ten MQTT'ye yazısında anlatılanla aynıdır; hikâyenin HVAC tarafı da IoT sensörleriyle HVAC izleme yazısında ele alınıyor. CO2 ölçümü aynı zamanda bir hava kalitesi sinyalidir; iç ortam hava kalitesi ölçer projemize bakın.

Sensör Doğruluğunu Doğrulamak

Herhangi biri doluluk verisi üzerine bir rapor kurmadan önce sensörlerin doğruyu söylediğini kontrol edin. Basit bir doğrulama haftası iyi işler. Birkaç oda seçin ve bir meslektaşınızdan belirli saatlerde gerçek kullanımı not etmesini isteyin ya da sensör verisini takvim rezervasyonlarıyla karşılaştırıp uyuşmazlıkları arayın. Tipik bulgular; koridordaki hareketi gördüğü için odayı dolu raporlayan mmWave sensörleri, uzun görüşmeler sırasında odaları boş raporlayan PIR sensörleri ve insanlar geldikten sonra on dakika veya daha fazla gecikmeli tepki veren CO2 sensörleridir.

Her bulguyu kaynağında düzeltin: radarın algılama menzilini azaltın, bir PIR'ı kapıya değil oturma alanına bakacak şekilde taşıyın ya da CO2'yi yalnızca doğrulama sinyali olarak kullanın. Yeni kurulumların bilinen iyi bir yapılandırmadan başlaması için son ayarları oda tipi başına kaydedin. Doğrulama, odaları ölçülen insanlarla güven de oluşturur; bu da teknik doğruluk kadar önemlidir.

Kurulum Kontrol Listesi

  1. Odaları inceleyin ve oda tipine göre teknolojiye karar verin.
  2. mmWave sensörlerini kapılardan ve pencerelerden uzakta, odanın içine bakacak şekilde monte edin.
  3. Her sensöre özel bir broker üzerinde benzersiz bir client ID ve kimlik bilgileri verin.
  4. Topic gezginini izlerken odaya girip çıkarak her odayı devreye alın.
  5. Kullanım oranı hakkında sonuç çıkarmadan önce iki hafta çalıştırın.

Bir demo önekiyle herkese açık MQTT test broker'ında test etmek uygundur; ancak gerçek doluluk verisi insanların binada ne zaman olduğunu ortaya koyar, bu yüzden TLS üzerinden özel bir broker'a aittir. ConnectMQ'nun yönetilen MQTT broker'ı her sensöre kendi kimlik bilgilerini verir ve birkaç düzine sensör bir pilota rahatça sığar. Daha fazla bina projesi için IoT otomasyon rehberine bakın.

Doluluk Sensörlerinizi ConnectMQ'da Çalıştırın

app.connectmq.com adresinden kaydolun ve kredi kartı gerekmeden ücretsiz bir Serverless broker oluşturun. İlk sensörlerinizi bağlayın, varlığın topic gezgininde canlı olarak değiştiğini izleyin ve yoğun odalarda CO2 için eşik uyarı kuralları ekleyin. ConnectMQ broker'ı üstlenir; böylece siz mekâna odaklanabilirsiniz.

Sık Sorulan Sorular

Toplantı odaları için en doğru ofis doluluk sensörü hangisidir?

mmWave radar, hareketsiz oturan kişileri algıladığı için genellikle en iyi tekil seçimdir. CO2 ile birleştirmek doğrulama ekler ve havalandırma kontrolünü destekler.

Doluluk sensörleri kişisel veri toplar mı?

PIR, mmWave ve CO2 sensörleri görüntü veya kimlik yakalamaz, ancak doluluk örüntüleri yine de hassastır. Yalnızca varlık veya sayı yayınlayın ve veriyi özel bir broker'da tutun.

Tutma süresi ne kadar olmalı?

Küçük odalar için 60 saniyeyle, büyük odalar için birkaç dakikaya kadar bir değerle başlayın; ardından bir hafta gerçek veriyi izledikten sonra ayarlayın.

Doluluk verisi HVAC enerji kullanımını azaltabilir mi?

Evet, boş bölgelerde sıcaklık ve havalandırmayı geri çekerek. Konforun asla sensör ağına bağlı olmaması için kontrolörün programını yedek olarak tutun.

İlgili yazılar

Zigbee2MQTT Kurulum Rehberi: Koordinatörden Panoya

Zigbee2MQTT'yi Docker ile kurun, koordinatörü ve MQTT bağlantısını yapılandırın, cihazları eşleştirip yeniden adlandırın, onları MQTT üzerinden kontrol edin ve durumlarını bir panoda görüntüleyin; önce ücretsiz herkese açık bir broker'da test edin.

7 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.