{"id":988,"date":"2026-06-13T11:10:37","date_gmt":"2026-06-13T09:10:37","guid":{"rendered":"https:\/\/www.coremind.ch\/wordpress\/?p=988"},"modified":"2026-06-13T11:10:37","modified_gmt":"2026-06-13T09:10:37","slug":"bayesian-sensor-anwesenheit-zuverlaessig-erkennen","status":"publish","type":"post","link":"https:\/\/www.coremind.ch\/wordpress\/bayesian-sensor-anwesenheit-zuverlaessig-erkennen\/","title":{"rendered":"Bayesian-Sensor: Anwesenheit zuverl\u00e4ssig erkennen"},"content":{"rendered":"<p>Jeder, der R\u00e4ume per Bewegungsmelder steuert, kennt das \u00c4rgernis: Man sitzt ruhig am Schreibtisch, der Sensor sieht keine Bewegung mehr \u2013 und das Licht geht aus. Ein einzelner <code>binary_sensor<\/code> ist eben blind f\u00fcr alles ausser Bewegung. Die L\u00f6sung heisst nicht \u00abnoch ein Timer\u00bb, sondern ein kl\u00fcgeres Modell, das mehrere Hinweise gewichtet kombiniert. Genau das leistet der Bayesian-Sensor in Home Assistant: Er sch\u00e4tzt aus vielen unsicheren Signalen die Wahrscheinlichkeit, dass ein Raum belegt ist \u2013 und schaltet erst, wenn diese Wahrscheinlichkeit hoch genug ist.<\/p>\n<h2>Die Idee dahinter<\/h2>\n<p>Der Bayesian-Sensor wendet das Bayes-Theorem an. Er startet mit einer Grundwahrscheinlichkeit, dem <code>prior<\/code> \u2013 also: Wie oft ist das B\u00fcro \u00fcberhaupt belegt, wenn ich sonst nichts weiss? Sagen wir 30 Prozent. Jede Beobachtung verschiebt diese Sch\u00e4tzung dann nach oben oder unten. Ein Bewegungsmelder, der gerade ausgel\u00f6st hat, erh\u00f6ht die Wahrscheinlichkeit stark. Ein Laptop, dessen Kamera aktiv ist, ebenfalls. Erreicht die kombinierte Wahrscheinlichkeit \u2013 der <code>posterior<\/code> \u2013 die Schwelle, schaltet der Sensor auf <code>on<\/code>.<\/p>\n<p>Der Clou: Kein einzelnes Signal entscheidet allein. F\u00e4llt die Bewegung weg, halten andere Hinweise \u2013 ein laufendes Meeting, ein eingeschalteter Bildschirm \u2013 die Wahrscheinlichkeit oben. Das Licht bleibt an, solange die Gesamtschau plausibel auf \u00abjemand ist da\u00bb deutet. Wer Anwesenheit bisher \u00fcber mehrere Ger\u00e4te zusammengef\u00fchrt hat, etwa mit <code>person<\/code>&#8211; und <code>zone<\/code>-Entit\u00e4ten, kennt den Ansatz \u2013 Bayesian macht ihn deutlich feink\u00f6rniger.<\/p>\n<h2>Die Bausteine: prior, probability_true, probability_false<\/h2>\n<p>Jede Beobachtung braucht zwei Werte. <code>prob_given_true<\/code> ist die Wahrscheinlichkeit, dass der Sensor <code>on<\/code> ist, wenn der Raum tats\u00e4chlich belegt ist. <code>prob_given_false<\/code> ist die Wahrscheinlichkeit, dass er <code>on<\/code> ist, obwohl niemand da ist. Ein guter Bewegungsmelder hat zum Beispiel ein hohes <code>prob_given_true<\/code> (er l\u00f6st aus, wenn man da ist) und ein tiefes <code>prob_given_false<\/code> (er l\u00f6st selten grundlos aus). Je gr\u00f6sser der Abstand zwischen beiden Werten, desto aussagekr\u00e4ftiger das Signal.<\/p>\n<p>Diese Zahlen muss man nicht perfekt treffen \u2013 Sch\u00e4tzungen aus dem eigenen Alltag gen\u00fcgen f\u00fcr den Start. Wichtig ist die Logik: Ein Signal, das fast immer korrekt ist, bekommt einen grossen Abstand; ein unsicheres Signal einen kleinen. Mehrere mittelm\u00e4ssige Hinweise ergeben zusammen ein erstaunlich verl\u00e4ssliches Gesamtbild.<\/p>\n<h2>Schritt f\u00fcr Schritt: ein B\u00fcro-Sensor<\/h2>\n<p>Das folgende Beispiel kombiniert einen Bewegungsmelder, die mmWave-Pr\u00e4senz und die Kamera-Nutzung des Arbeitslaptops zu einem robusten B\u00fcro-Belegungssensor. Die Konfiguration kommt in die <code>configuration.yaml<\/code> (oder eine ausgelagerte <code>binary_sensor<\/code>-Datei):<\/p>\n<pre><code>\u2029binary_sensor:\u2029  - platform: bayesian\u2029    name: \"B\u00fcro belegt\"\u2029    unique_id: buero_belegt_bayesian\u2029    prior: 0.3\u2029    probability_threshold: 0.8\u2029    observations:\u2029      - platform: state\u2029        entity_id: binary_sensor.hue_motion_sensor_2_bewegung\u2029        to_state: \"on\"\u2029        prob_given_true: 0.85\u2029        prob_given_false: 0.10\u2029      - platform: state\u2029        entity_id: binary_sensor.presence_sensor\u2029        to_state: \"on\"\u2029        prob_given_true: 0.90\u2029        prob_given_false: 0.15\u2029      - platform: state\u2029        entity_id: binary_sensor.macbook_pro_von_mike_camera_in_use\u2029        to_state: \"on\"\u2029        prob_given_true: 0.70\u2029        prob_given_false: 0.02\u2029<\/code><\/pre>\n<p>Der <code>prior<\/code> von 0.3 sagt: Ohne weitere Hinweise ist das B\u00fcro zu 30 Prozent belegt. Die Schwelle von 0.8 sorgt daf\u00fcr, dass der Sensor erst bei klarer Beweislage schaltet. Die laufende Kamera ist ein starkes Signal: Sie ist fast nie grundlos an (<code>prob_given_false: 0.02<\/code>), deshalb hebt sie die Wahrscheinlichkeit kr\u00e4ftig, sobald ein Meeting l\u00e4uft \u2013 selbst wenn man minutenlang regungslos zuh\u00f6rt.<\/p>\n<p>Anschliessend bindet eine Automation den neuen Sensor an das Licht \u2013 mit einem grossz\u00fcgigen Ausschalt-Delay als Sicherheitsnetz:<\/p>\n<pre><code>\u2029automation:\u2029  - alias: \"B\u00fcrolicht nach Belegung\"\u2029    trigger:\u2029      - platform: state\u2029        entity_id: binary_sensor.buero_belegt\u2029        to: \"off\"\u2029        for: \"00:05:00\"\u2029    action:\u2029      - service: light.turn_off\u2029        target:\u2029          entity_id: light.wh_office_light\u2029<\/code><\/pre>\n<h2>Feinschliff aus der Praxis<\/h2>\n<p>Drei Hinweise sparen Frust. Erstens: Beginnen Sie mit zwei, drei Beobachtungen und erg\u00e4nzen Sie nach und nach \u2013 ein \u00fcberladener Sensor ist schwer zu durchschauen. Zweitens: Den <code>prior<\/code> und die Schwelle nicht extrem w\u00e4hlen. Ein <code>prior<\/code> nahe 0 oder 1 macht den Sensor tr\u00e4ge; eine Schwelle von 0.95 verlangt fast Gewissheit und schaltet kaum noch. Werte zwischen 0.7 und 0.85 sind ein guter Startbereich. Drittens: Sie k\u00f6nnen auch <code>numeric_state<\/code>-Beobachtungen einbauen, etwa einen Stromz\u00e4hler des Arbeitsplatzrechners \u00fcber der Standby-Schwelle \u2013 so fliesst sogar der Verbrauch als Indiz ein.<\/p>\n<h2>Fazit<\/h2>\n<p>Der Bayesian-Sensor verwandelt mehrere unsichere Einzelsignale in eine stabile Aussage \u00fcber die Belegung eines Raums. Statt sture Timer gegen die Realit\u00e4t k\u00e4mpfen zu lassen, gewichten Sie Hinweise so, wie ein Mensch es t\u00e4te \u2013 Bewegung, Pr\u00e4senz, laufendes Ger\u00e4t, alles zusammen. Fangen Sie mit einem einzigen Raum und drei Beobachtungen an, beobachten Sie ein paar Tage das Verhalten im Verlauf und justieren Sie die Wahrscheinlichkeiten nach. Sie werden \u00fcberrascht sein, wie schnell das nervige \u00abLicht aus, obwohl ich hier sitze\u00bb verschwindet.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jeder, der R\u00e4ume per Bewegungsmelder steuert, kennt das \u00c4rgernis: Man sitzt ruhig am Schreibtisch, der Sensor sieht keine Bewegung mehr \u2013 und das Licht geht aus. Ein einzelner binary_sensor ist eben blind f\u00fcr alles ausser Bewegung. Die L\u00f6sung heisst nicht \u00abnoch ein Timer\u00bb, sondern ein kl\u00fcgeres Modell, das mehrere Hinweise gewichtet kombiniert. Genau das leistet &#8230; <a title=\"Bayesian-Sensor: Anwesenheit zuverl\u00e4ssig erkennen\" class=\"read-more\" href=\"https:\/\/www.coremind.ch\/wordpress\/bayesian-sensor-anwesenheit-zuverlaessig-erkennen\/\" aria-label=\"Mehr Informationen \u00fcber Bayesian-Sensor: Anwesenheit zuverl\u00e4ssig erkennen\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-988","post","type-post","status-publish","format-standard","hentry","category-ha"],"_links":{"self":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/comments?post=988"}],"version-history":[{"count":1,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/988\/revisions"}],"predecessor-version":[{"id":1016,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/988\/revisions\/1016"}],"wp:attachment":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/media?parent=988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/categories?post=988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/tags?post=988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}