Ein Netzwerk aus Präsenzsensoren im Büro zeigt Ihnen, welche Räume und Arbeitsplätze tatsächlich genutzt werden und wann. In diesem Anwendungsfall vergleichen Sie PIR-, mmWave- und CO2-basierte Erfassung, veröffentlichen die Belegung über MQTT mit einem sauberen Topic-Design und nutzen die Daten auf einem ConnectMQ-Broker für Auslastungsberichte und bedarfsgerechte HLK-Steuerung.
Warum Belegung messen
Hybrides Arbeiten hat die Büronutzung unvorhersehbar gemacht. Im Kalender gebuchte Besprechungsräume stehen leer, während kleine Fokusräume ständig belegt sind. Etagen werden nach vollem Zeitplan geheizt und gekühlt, selbst an Tagen, an denen nur ein Bruchteil der Belegschaft kommt. Belegungsdaten beantworten praktische Fragen: Welche Räume sind überdimensioniert, kann eine Etage freitags geschlossen werden, und lässt sich die Lüftung in leeren Zonen reduzieren?
Buchungssysteme und Zutrittsdaten liefern einen Teil des Bildes, erfassen aber Absicht und Eintritt, nicht die tatsächliche Anwesenheit in einem Raum. Sensoren schließen diese Lücke, und MQTT ist ein naheliegender Weg, ihre Daten über viele Gebäude hinweg zu sammeln.
Die richtige Sensortechnologie wählen
Jede Technologie hat eine typische Schwachstelle, und die besten Installationen kombinieren zwei.
| Technologie | Funktionsweise | Stärken | Schwächen | Am besten für |
|---|---|---|---|---|
| PIR | Erkennt sich bewegende Wärmequellen | Günstig, stromsparend, ausgereift | Übersieht still sitzende Personen, sodass Räume bei konzentrierter Arbeit leer erscheinen | Flure, Toiletten, Lichtsteuerung |
| mmWave-Radar | Erkennt kleinste Bewegungen einschließlich Atmung | Erkennt ruhende Personen, funktioniert durch dünne Abdeckungen | Kann ohne Feinabstimmung durch Wände sehen und Nachbarräume erfassen; braucht Netzstrom oder große Batterie | Besprechungsräume, Fokusräume, Arbeitsplätze |
| CO2 | Steigende CO2-Konzentration zeigt atmende Personen an | Liefert gleichzeitig eine grobe Personenzahl und Luftqualität | Langsam (Minuten), abhängig von der Lüftungsrate | Lüftungssteuerung, große Räume |
| Arbeitsplatzsensoren | PIR oder Thermosensor unter dem Tisch | Auslastung auf Platzebene | Viele Geräte zu warten | Desk-Sharing-Analysen |
| Thermo-Arrays / Personenzähler | Niedrig aufgelöstes Wärmebild oder Zählung an Türen | Zählt Personen ohne Bilder | Höhere Kosten, sorgfältige Platzierung nötig | Große offene Flächen, Eingänge |
Eine verbreitete und robuste Kombination für Besprechungsräume ist mmWave für die Präsenz plus CO2 zur Bestätigung und Lüftung. PIR allein meldet einen Raum bei langen Videocalls oft als leer, weil sich die Personen kaum bewegen.
Datenschutz zuerst
Belegungsdaten betreffen Menschen. Verwenden Sie Sensoren, die keine Bilder aufnehmen, veröffentlichen Sie Anwesenheit oder Anzahl statt Identitäten, und schreiben Sie niemals Namen oder Ausweisnummern in Topics. Aggregieren Sie Arbeitsplatzdaten, bevor Sie sie breit teilen, und prüfen Sie vor dem Einsatz die DSGVO-Anforderungen, lokale Vorschriften und Betriebsvereinbarungen; in Deutschland und Österreich ist bei solchen Systemen in der Regel der Betriebsrat einzubinden.
MQTT-Topic- und Payload-Design
Bilden Sie die Topics nach der physischen Hierarchie, damit Wildcards echte Fragen beantworten:
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)
Eine Präsenznachricht sollte den Zustand, die Quelle und den Zeitpunkt der letzten Änderung enthalten:
{
"ts": "2026-10-16T09:41:07Z",
"occupied": true,
"source": "mmwave",
"since": "2026-10-16T09:12:30Z",
"count_estimate": null
}
Veröffentlichen Sie die Belegung als retained, damit ein Dashboard, das sich mitten am Tag verbindet, sofort den aktuellen Zustand anzeigt. Senden Sie bei Änderungen plus einen Heartbeat alle paar Minuten; so bleibt der Datenverkehr winzig, und Sie erkennen trotzdem einen ausgefallenen Sensor. Mit der ordnerartigen Hierarchie liefert acme/ist01/hq/f03/+/occupancy jeden Raum und jeden Arbeitsplatz im dritten Stock, und die Geräteansicht von ConnectMQ kann dieselben Topics nach Standort und Bereich gruppieren. Dasselbe Prinzip trägt in der Industrie den Unified Namespace (UNS), dessen Topic-Struktur der ISA-95-Hierarchie folgt; ein Werk mit Verwaltungsgebäude kann die Büro-Topics einfach unterhalb seines Standorts in den UNS einhängen, etwa acme/werk-muenchen/verwaltung/og3/besprechung-301/occupancy.
Ein einfacher mmWave-Sensorknoten
Beliebte günstige mmWave-Module wie die LD2410-Familie bieten einen digitalen Ausgangspin, der bei erkannter Präsenz auf HIGH geht. Ein ESP32 kann diesen Pin entprellen und Änderungen veröffentlichen. Der Sketch verwendet PubSubClient und zum Testen den öffentlichen Broker.
#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-Pin
const unsigned long HOLD_MS = 60000; // 60 s nach der letzten Erkennung "belegt" bleiben
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);
}
Die Haltezeit ist der wichtigste Einstellparameter. Ist sie zu kurz, springt der Raum ständig zwischen belegt und leer; ist sie zu lang, wirkt der Raum noch belegt, nachdem alle gegangen sind. Sechzig Sekunden bis wenige Minuten funktionieren für Besprechungsräume gut. Stellen Sie die Erfassungsreichweite des Radars mit dem Herstellertool so ein, dass es nicht in den Flur sieht.
Von roher Präsenz zur Auslastung
Rohe Ein/Aus-Nachrichten werden erst nach der Aggregation nützlich. Ein kleiner Subscriber kann pro Raum und Tag berechnen, welchen Anteil der Arbeitszeit der Raum belegt war. Eine minimale Python-Version:
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()
Speichern Sie die Zustandswechsel im Produktivbetrieb in einer Datenbank, damit Sie wöchentliche Spitzen auswerten und Räume nach Größe vergleichen können.
Belegung für die HLK-Steuerung nutzen
Belegungsdaten amortisieren sich am schnellsten, wenn sie Lüftung und Temperaturabsenkung steuern:
- Ist eine Zone eine festgelegte Zeit lang leer, kann ein Gateway ihr Temperatur-Totband erweitern oder den Luftstrom reduzieren.
- Steigt CO2 über Ihren Zielwert, erhöhen Sie die Lüftung unabhängig vom Präsenzzustand.
- Vor geplanter Belegung konditionieren Sie den Raum wie gewohnt vor; die Belegung reduziert den Zeitplan nur, sie ersetzt ihn nie.
- Halten Sie die lokale Steuerung stets sicher: Der HLK-Regler sollte auf seinen Zeitplan zurückfallen, wenn keine Belegungsdaten mehr eintreffen.
Der Rückschreibpfad zur GLT ist derselbe, der in BACnet zu MQTT beschrieben wird, und die HLK-Seite behandeln wir in HLK-Überwachung mit IoT-Sensoren. Die CO2-Messung dient zugleich als Luftqualitätssignal; siehe unseren Bau eines Raumluftqualität-Messgeräts.
Sensorgenauigkeit validieren
Bevor jemand einen Bericht auf Belegungsdaten aufbaut, prüfen Sie, ob die Sensoren die Wahrheit sagen. Eine einfache Validierungswoche funktioniert gut. Wählen Sie einige Räume aus und bitten Sie eine Kollegin oder einen Kollegen, die tatsächliche Nutzung zu festen Zeiten zu notieren, oder vergleichen Sie Sensordaten mit Kalenderbuchungen und suchen Sie nach Abweichungen. Typische Befunde sind mmWave-Sensoren, die einen Raum als belegt melden, weil sie Bewegung im Flur sehen, PIR-Sensoren, die bei langen Calls leere Räume melden, und CO2-Sensoren, die nach dem Eintreffen der Personen zehn Minuten oder länger nachhinken.
Beheben Sie jeden Befund an der Quelle: Reduzieren Sie die Reichweite des Radars, richten Sie einen PIR auf den Sitzbereich statt auf die Tür aus, oder nutzen Sie CO2 nur als Bestätigungssignal. Dokumentieren Sie die endgültigen Einstellungen pro Raumtyp, damit neue Installationen mit einer bewährten Konfiguration starten. Die Validierung schafft außerdem Vertrauen bei den Menschen, deren Räume gemessen werden, und das ist ebenso wichtig wie technische Genauigkeit.
Checkliste für die Installation
- Räume begehen und die Technologie pro Raumtyp festlegen.
- mmWave-Sensoren in den Raum gerichtet montieren, entfernt von Türen und Fenstern.
- Jedem Sensor eine eindeutige Client ID und Zugangsdaten auf einem privaten Broker geben.
- Jeden Raum in Betrieb nehmen, indem Sie hinein- und hinausgehen und dabei den Topic-Explorer beobachten.
- Zwei Wochen laufen lassen, bevor Sie Schlüsse zur Auslastung ziehen.
Tests auf dem öffentlichen MQTT-Broker sind mit einem Demo-Präfix in Ordnung, aber echte Belegungsdaten verraten, wann Menschen im Gebäude sind; sie gehören deshalb auf einen privaten Broker mit TLS. Ein verwalteter MQTT-Broker von ConnectMQ gibt jedem Sensor eigene Zugangsdaten, und ein paar Dutzend Sensoren passen bequem in ein Pilotprojekt. Weitere Gebäudeprojekte finden Sie im Leitfaden zur IoT-Automatisierung.
Betreiben Sie Ihre Präsenzsensoren mit ConnectMQ
Registrieren Sie sich unter app.connectmq.com und erstellen Sie einen kostenlosen Serverless-Broker, ohne Kreditkarte. Verbinden Sie Ihre ersten Sensoren, beobachten Sie Präsenzänderungen live im Topic-Explorer und legen Sie Schwellwert-Alarmregeln für CO2 in stark genutzten Räumen an. ConnectMQ kümmert sich um den Broker, damit Sie sich auf die Flächen konzentrieren können.
Häufig gestellte Fragen
Welcher Präsenzsensor ist für Besprechungsräume am genauesten?
mmWave-Radar ist meist die beste Einzellösung, weil es still sitzende Personen erkennt. Die Kombination mit CO2 sorgt für Bestätigung und unterstützt die Lüftungssteuerung.
Erfassen Präsenzsensoren personenbezogene Daten?
PIR-, mmWave- und CO2-Sensoren erfassen weder Bilder noch Identitäten, Belegungsmuster sind aber dennoch sensibel. Veröffentlichen Sie nur Anwesenheit oder Personenzahlen und halten Sie die Daten auf einem privaten Broker.
Wie lang sollte die Haltezeit sein?
Beginnen Sie mit 60 Sekunden für kleine Räume und bis zu einigen Minuten für große, und passen Sie den Wert an, nachdem Sie eine Woche lang echte Daten beobachtet haben.
Können Belegungsdaten den Energieverbrauch der HLK senken?
Ja, indem Temperatur und Lüftung in leeren Zonen abgesenkt werden. Behalten Sie den Zeitplan des Reglers als Rückfallebene, damit der Komfort nie vom Sensornetz abhängt.



