# Bayesian Binary Sensor

The `bayesian`

binary sensor platform observes the state from multiple sensors and uses Bayesâ€™ rule to estimate the probability that an event has occurred given the state of the observed sensors. If the estimated posterior probability is above the `probability_threshold`

, the sensor is `on`

otherwise it is `off`

.

This allows for the detection of complex events that may not be readily observable, e.g., cooking, showering, in bed, the start of a morning routine, etc. It can also be used to gain greater confidence about events that *are* directly observable, but for which the sensors can be unreliable, e.g., presence.

To enable the Bayesian sensor, add the following lines to your `configuration.yaml`

:

```
# Example configuration.yaml entry
binary_sensor:
- platform: bayesian
prior: 0.1
observations:
- entity_id: 'switch.kitchen_lights'
prob_given_true: 0.6
prob_given_false: 0.2
platform: 'state'
to_state: 'on'
```

Configuration variables:

**prior**(*Required*): The prior probability of the event. At any point in time (ignoring all external influences) how likely is this event to occur?**probability_threshold**(*Optional*): The probability at which the sensor should trigger to`on`

.**name**(*Optional*): Name of the sensor to use in the frontend. Defaults to`Bayesian Binary sensor`

.**observations**array (*Required*): The observations which should influence the likelihood that the given event has occurred.**entity_id**(*Required*): Name of the entity to monitor.**prob_given_true**(*Required*): The probability of the observation occurring, given the event is`true`

.**prob_given_false**(*Optional*): The probability of the observation occurring, given the event is`false`

can be set as well. If`prob_given_false`

is not set, it will default to`1 - prob_given_true`

.**platform**(*Required*): The only supported observation platforms are`state`

and`numeric_state`

, which are modeled after their corresponding triggers for automations, requiring`below`

and/or`above`

instead of`to_state`

.**to_state**(*Required*): The target state.

## Full examples

```
# Example configuration.yaml entry
binary_sensor:
name: 'in_bed'
platform: 'bayesian'
prior: 0.25
probability_threshold: 0.95
observations:
- entity_id: 'sensor.living_room_motion'
prob_given_true: 0.4
prob_given_false: 0.2
platform: 'state'
to_state: 'off'
- entity_id: 'sensor.basement_motion'
prob_given_true: 0.5
prob_given_false: 0.4
platform: 'state'
to_state: 'off'
- entity_id: 'sensor.bedroom_motion'
prob_given_true: 0.5
platform: 'state'
to_state: 'on'
- entity_id: 'sun.sun'
prob_given_true: 0.7
platform: 'state'
to_state: 'below_horizon'
```

```
# Example configuration.yaml entry
binary_sensor:
name: 'Heat On'
platform: 'bayesian'
prior: 0.2
probability_threshold: 0.9
observations:
- entity_id: 'sensor.outside_air_temperature_fahrenheit'
prob_given_true: 0.95
platform: 'numeric_state'
below: 50
```