Home Assistant

macOS Camera/Mic in Use: Meeting-Detektor in HA

Die Apple-Integration in Home Assistant ist seit Version 2024.6 deutlich tiefer geworden – und liefert mit den Sensoren binary_sensor.macbook_pro_von_mike_camera_in_use, _audio_input_in_use und _audio_output_in_use drei der unauffälligsten, aber praktischsten Statussignale, die ein Smart-Home haben kann. Sobald die Webcam an ist oder das Mikrofon aktiviert wurde, weiss HA: Der Bewohner ist in einem Meeting oder einem Anruf. Daraus lässt sich eine ganze Automatisierungs-Kaskade bauen – ohne dass je ein Sensor verbaut wird.

Voraussetzungen: Apple Home + Companion oder HASS.Agent

Damit die Sensoren in HA erscheinen, gibt es zwei Wege. Variante 1: Über die offizielle Home Assistant Companion App für macOS (seit 2024.6 verfügbar), die Camera-, Mic- und Focus-Status nativ per Permission abfragt – die saubere Lösung. Variante 2: Die Open-Source-Lösung HASS.Agent oder homeassistant-mac-companion auf GitHub. Beide brauchen einmalig System-Settings → Privacy → Camera/Microphone-Permissions.

Wer mehrere Macs hat, bekommt pro Gerät einen Satz Sensoren. Nützlich bei Familien mit mehreren Home-Office-Plätzen: binary_sensor.macbook_pro_von_mike_camera_in_use und binary_sensor.macbook_air_von_louisa_camera_in_use zeigen, wer im Call ist.

Use-Case 1: «Bin im Meeting»-Lichtsignal vor der Bürotür

Das klassische Szenario: Eine Hue-Lampe vor dem Büro zeigt Rot, sobald die Webcam an ist, und Grün, wenn nicht. Das spart der Familie peinliche «Papa, schau mal!»-Momente live im Zoom.


automation:
  - alias: "Meeting-Lichtsignal Rot"
    trigger:
      - platform: state
        entity_id: binary_sensor.macbook_pro_von_mike_camera_in_use
        to: "on"
    action:
      - service: light.turn_on
        target:
          entity_id: light.hue_color_buero_tuer
        data:
          rgb_color: [255, 0, 0]
          brightness: 200

  - alias: "Meeting-Lichtsignal Grün"
    trigger:
      - platform: state
        entity_id: binary_sensor.macbook_pro_von_mike_camera_in_use
        to: "off"
        for: "00:00:30"
    action:
      - service: light.turn_on
        target:
          entity_id: light.hue_color_buero_tuer
        data:
          rgb_color: [0, 255, 0]
          brightness: 80


Das for: "00:00:30" filtert kurze Kamera-Wechsel (Screenshot, Permission-Check) raus. Wer ohne Hue arbeitet, kann auch eine simple Cololight oder einen WLED-Strip an der Bürotür verwenden.

Use-Case 2: Geräuschquellen leise drehen

Wer kennt es nicht: Mitten im Call läuft die Waschmaschine an, der Saugroboter startet, oder die Spülmaschine fängt an zu rauschen. Mit binary_sensor.macbook_pro_von_mike_audio_input_in_use als Trigger lässt sich das verhindern:


automation:
  - alias: "Saugroboter pausieren bei Mic-Aktiv"
    trigger:
      - platform: state
        entity_id: binary_sensor.macbook_pro_von_mike_audio_input_in_use
        to: "on"
    condition:
      - condition: state
        entity_id: vacuum.roborock_s6_maxv
        state: "cleaning"
    action:
      - service: vacuum.pause
        target:
          entity_id: vacuum.roborock_s6_maxv
      - service: notify.mobile_app_mikes_iphone_17_pro
        data:
          message: "Roborock pausiert – Meeting erkannt"


Analog lässt sich der Mi Air Purifier (fan.zhimi_mb3_b2e5_air_purifier) auf Silent-Modus runterregeln, der Geschirrspüler-Start-Push unterdrücken oder der Lüfter-Modus der Wärmepumpe auf «leise» gestellt werden.

Use-Case 3: Template-Sensor «In Meeting»

Drei Sensoren parallel auszuwerten wird schnell unübersichtlich. Ein Template-Binary-Sensor bündelt sie zu einem zentralen Meeting-Indikator:


template:
  - binary_sensor:
      - name: "Mike In Meeting"
        unique_id: mike_in_meeting
        state: >
          {{ is_state('binary_sensor.macbook_pro_von_mike_camera_in_use', 'on')
             or (is_state('binary_sensor.macbook_pro_von_mike_audio_input_in_use', 'on')
                 and is_state('binary_sensor.macbook_pro_von_mike_audio_output_in_use', 'on')) }}
        delay_off: "00:01:00"
        icon: mdi:headset


Die delay_off-Variable verhindert Flackern bei kurzen Mute-Pausen. Mit diesem zentralen Sensor steuern andere Automationen sauberer: Türklingel auf stumm, Telegram-Push aufschieben, Lichteinstellung im Büro fixieren.

Use-Case 4: Tagesstatistik «Meeting-Stunden»

Wer sehen will, wie viele Stunden pro Woche in Calls draufgehen, baut einen History-Stats-Sensor:


sensor:
  - platform: history_stats
    name: "Meeting Stunden heute"
    entity_id: binary_sensor.mike_in_meeting
    state: "on"
    type: time
    start: "{{ today_at('00:00') }}"
    end: "{{ now() }}"


Das gibt einen ehrlichen Reality-Check über das Wochen-Volumen. Mit Apex-Charts in einem Lovelace-Dashboard sieht man Tag für Tag, wo der Tag wirklich hingeht.

Stolperfallen und Privacy

Die macOS-Permissions müssen für die Companion-App nach jedem grösseren OS-Update neu erteilt werden – sonst zeigen die Sensoren falsche unknown-Zustände. Wer Privacy-bewusst ist: Die Companion App sendet keinen Audio/Video-Inhalt, nur den State (an/aus). Trotzdem lokal hosten (HAOS oder HA Core) und nicht via Cloud-Brücke nutzen.

Apple Focus-Sensoren als Trigger zeigt, wie das Apple-Focus-Mode-Signal auf die gleiche Architektur aufsetzt – Camera/Mic und Focus ergänzen sich für eine vollständige Anwesenheits- und Status-Erkennung ohne Mehrkosten.

Fazit

Drei Sensoren, die ohnehin im Mac vorhanden sind – einmal aktiviert und mit ein paar YAML-Zeilen kombiniert – ersetzen einen halben Zigbee-Sensor-Park für Anwesenheits- und Statussteuerung im Home-Office. Wer hybrid arbeitet, bekommt damit eine der eleganten Smart-Home-Automationen, ohne einen Franken in zusätzliche Hardware zu stecken.

← Zurück zur Übersicht